619 Commits
Author SHA1 Message Date
FusionPBX 8cef54bacf Fix the permission for call block 2024-11-25 09:18:34 -07:00
FusionPBX 1b2acb1026 Fix a bug where logo was overridden 2024-09-05 10:18:56 -06:00
FusionPBX 69d9ac0819 Update session regenerate 2024-09-02 22:51:03 -06:00
FusionPBX 8c94548bfa Remove image meta data
- Reading the image and re-saving the image removes the metadata.
- This meta data is removed to protect privacy
2024-08-22 15:13:19 -06:00
FusionPBX 52352dec39 Fix intermittent issue with the Sub Menu 2024-08-02 11:22:40 -06:00
frytimoandTim Fry 16574221b1 Check if setting exists before trying to count (#7071)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-26 12:13:19 -06:00
FusionPBX ce26f227bf 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:36:40 -06:00
FusionPBX cf005c7671 Template engine use sys_get_temp_dir
Used to get the operating system temp directory.
2024-06-26 07:43:23 -06:00
FusionPBX c5861e4170 Fix provisioning template engine.
Template engine must get the cache directory or it fails to provision. This affected polycom phone provisioning and maybe other phones.
2024-06-25 20:28:58 -06:00
FusionPBX eb64028bb1 Minor version update 5.2.4 2024-05-30 21:18:57 -06:00
FusionPBX 320f402d18 Ring group handle number alias 2024-05-30 00:12:08 -06:00
FusionPBX 14d69d6ca2 Update xml_cdr.php 2024-05-15 14:52:00 -06:00
FusionPBX b61f9375ff 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:41:44 -06:00
FusionPBX 93e1987754 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:51 -06:00
FusionPBX 6b2b842314 Skip the cache if the SQL query timed out 2024-05-06 14:08:53 -06:00
FusionPBX 17e82ed560 Bug fix for FAX forward 2024-05-03 13:16:44 -06:00
FusionPBX b0a0fa9ab1 Bug fixed to send fax to a local extension 2024-05-03 13:14:45 -06:00
FusionPBX 39b7ca7058 Update software.php 2024-04-24 22:00:57 -06:00
FusionPBX 2262ec7272 Recent Calls hide Lose Race 2024-04-22 12:18:00 -06:00
FusionPBX 8091252664 Show all messages in the fax queue
Including ones not assigned to a user
2024-04-11 16:05:25 -06:00
FusionPBX e1cd500d71 Bug fix replace dialed_user with dialed_extension 2024-04-03 11:22:42 -06:00
FusionPBX 172ed8392c 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:52:40 -06:00
FusionPBX 023f54c9ad Minor version update to 5.2.2 2024-04-01 11:23:52 -06:00
Zachary Kitchen 360cf73c79 Include Date on Fax Coversheet (#6919) 2024-03-21 10:36:09 -06:00
fusionate bed88ea5d0 Voicemail: Adjustment to restore emailed message Download link feature. 2024-03-14 16:57:03 -06:00
fusionate 6833705895 Voicemail: Class adjustment to restore emailed message Download link functionality. 2024-03-14 16:55:43 -06:00
FusionPBX a79a3275d3 Update GXP templates 2024-03-13 18:02:55 -06:00
FusionPBX c249e1c1a4 Support a 0 value
Used !isset to support a value of 0 as empty the empty function considers a value of 0 as empty.
2024-03-13 11:13:50 -06:00
FusionPBX fc21a1b2d3 Update intercept.lua 2024-03-07 16:21:06 -07:00
FusionPBX a0392f265e Fixed intercept
Remove from SQL where as the call_uuid is not always used
2024-03-07 14:41:25 -07:00
FusionPBX 7244cf5813 Add caller_destination to allowed variables 2024-03-05 18:29:11 -07:00
FusionPBX ffcf06b774 Update language/sv/vm/sounds.xml fix xml 2024-03-05 12:51:40 -07:00
FusionPBX 69a9e28081 Update the GXP Template
Add missing variables from version 1 p-code templates 

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:25:34 -07:00
FusionPBX 18d5f5fc4e Update the GXP Template
Add missing variables that were in the version 1 p-code templates

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:53:11 -07:00
FusionPBX d465e8ab39 Update index.lua
Use the original_caller_id_number in the diversion header.
2024-03-04 19:08:42 -07:00
FusionPBX ddc3befd60 Add required diversion header 2024-03-04 16:54:50 -07:00
FusionPBX 1f79e6dfb9 Grandstream GXP2135 fix register_expires, DND, and call forward 2024-03-04 13:54:45 -07:00
FusionPBX 2f3486e454 Remove self closing tag when a value is provided 2024-03-04 13:39:40 -07:00
FusionPBX f45d061ad3 GXP2170 fix register_expires, DND, and call forward 2024-03-04 13:32:41 -07:00
FusionPBX e6274fb6ac Remove self closing tag for *78 and *79 2024-03-04 13:28:52 -07:00
FusionPBX 58a8d35135 Grandstream 2160 Fix keys assignments over 6 2024-03-04 13:25:35 -07:00
FusionPBX 8a1194ec81 Grandstream 2140 Fix keys assignments over 4 2024-03-04 13:14:24 -07:00
FusionPBX 9a122d1c6c Grandstream 2135 Fix keys assignments over 3 2024-03-04 13:07:20 -07:00
FusionPBX fa7a6a52bc Grandstream 2135 Fix keys over 8 2024-03-04 12:51:12 -07:00
FusionPBX d05dfc660c Grandstream 2170 Fix keys over 12 2024-03-04 12:46:06 -07:00
FusionPBX 2820185274 Minor version update 5.2.1 2024-03-01 18:36:00 -07:00
FusionPBX cda2f530a7 Fix the order by for IVR Menu Options 2024-03-01 18:28:07 -07:00
FusionPBX c1e6f3e11d Include ORIGINATOR_CANCEL for missed calls 2024-03-01 14:10:19 -07:00
FusionPBX d7ac495b7e Refresh Publication
Needed to prevent issues with logical replication
2024-03-01 12:49:16 -07:00
FusionPBX b9ce1d2edf Add yealink_app_unavailable from another template 2024-02-29 09:53:11 -07:00
fusionate 84e71af649 Operator Panel: Restore drag/drop calling and transfer. 2024-02-27 11:29:07 -07:00
FusionPBX bc6582b908 Ring group destination adde per user music on hold
This was reported as a bug. Where the extension music on hold was not being used when the extension was called through a ring group.
2024-02-24 21:09:18 -07:00
FusionPBX 4ae3f99589 Fix fax from address when sending an outbound fax 2024-02-23 15:43:59 -07:00
Alex 9c4e38babc Update xml_cdr_inc.php (#6904) 2024-02-22 15:55:59 -07:00
FusionPBX 94e558f7b6 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:22:29 -07:00
FusionPBX 4a6cc913bf Fix the Yealink Conference templates 2024-02-21 16:34:20 -07:00
FusionPBX fd94e585da 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:26:14 -07:00
FusionPBX b58ebffc07 Add time format for 12h or 24h 2024-02-20 14:52:46 -07:00
FusionPBX fc0d72c5fa Update missed_calls.php
- Simplify SQL time format
- Use SQL limit to be more efficient
- Use the call detail record status
- Fix the View all link to use statu=missed
2024-02-20 14:51:09 -07:00
FusionPBX d028b0ca84 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:49:09 -07:00
FusionPBX 02a2c6c7c8 Update app_languages.php add no answer 2024-02-20 14:31:07 -07:00
FusionPBX ebadf2934d 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:49:06 -07:00
FusionPBX ee49410edb Don't use voicemail_id to determine call status
This is an unreliable way to detect if the call went to voicemail.
2024-02-20 12:30:20 -07:00
Zachary Kitchen 859f08fbb2 Grandstream Provisioning File Updates (#6899)
* Fixed issue with registration time for Grandstreams with registration expiration time set for less than 60 seconds
* Updated Grandstream GXP provisioning files to use values from registration expiration time
* Fixed physical key profile issues on GXP & GRP phones
2024-02-19 21:07:12 -07:00
FusionPBX 3fb475d67d Fix bug with sipnetic use server_address
The registration domain should use server_address not the outbound_proxy_primary address.
2024-02-19 14:58:02 -07:00
Alex e2205cb6b6 Update call_broadcast_send.php (#6897) 2024-02-19 11:37:23 -07:00
FusionPBX a4b054d97a Update 310_extension-to-voicemail.xml
Quote the interpolated part of the regexes between \Q and \E
2024-02-13 18:04:43 -07:00
FusionPBX 074d8a87dd Update app_config.php 2024-02-12 11:06:29 -07:00
FusionPBX 1e18ea3c8f Update app_config.php 2024-02-12 10:42:24 -07:00
FusionPBX a6ea0f2d04 Add emergency_email_address setting by default 2024-02-12 10:39:45 -07:00
FusionPBX e08b82c160 Bug fix for app/emergency logs 2024-02-12 10:26:33 -07:00
FusionPBX 2654c50fe8 frytimo Use the settings class in the cache class (#6891) 2024-02-09 12:13:29 -07:00
FusionPBX 0297eb5fad Use {$yealink_rport} variable 2024-02-08 16:18:53 -07:00
FusionPBX 9f52a2ea2c Disable ws and wss by default 2024-02-07 17:52:14 -07:00
FusionPBX 01aaebbb1c Fix the GSWave link 2024-02-06 21:31:29 -07:00
FusionPBX bdd0d26324 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:25:36 -07:00
FusionPBX e3682cee6c Bug Fix: Clean buffer before sending the rendered template 2024-02-06 12:31:16 -07:00
FusionPBX 64fd1a5e54 Bug Fix: Use the HTTP_HOST if the domain_uuid is empty 2024-02-05 18:56:03 -07:00
FusionPBX d3c05bae43 Remove the single quote
Remove backslash as it didn't work
2024-02-05 17:23:26 -07:00
FusionPBX 441f2dfcf1 Add escape_quote quoted values 2024-02-05 17:11:20 -07:00
FusionPBX 0de12da8fa Fix a bug with emergency_outbound_caller_id_number
Set call_date moved so it didn't overwrite another variable
2024-02-02 20:00:52 -07:00
FusionPBX e22c972848 Fix issue where smtp from would send as <> 2024-01-29 13:21:28 -07:00
FusionPBX 8b90eee5a3 Major version update release 5.2.0 2024-01-24 13:11:53 -07:00
FusionPBX 9d5bc340a4 Add the theme title setting 2024-01-24 12:51:13 -07:00
fusionate 02de5334e5 Restore default branding in window title. 2024-01-24 19:16:36 +00:00
fusionate 3938398b1f Email Queue - Edit: Hide Response field if response disabled. 2024-01-24 18:41:12 +00:00
FusionPBX 7231a37a57 Enable clearing the email_response 2024-01-24 11:13:57 -07:00
FusionPBX 6ec3c53c1f Email Queue save response false by default 2024-01-24 11:04:51 -07:00
FusionPBX 2d8f591534 Update send.php
Spelling correction and use domain_uuid to find settings
2024-01-24 10:58:12 -07:00
fusionate 657cbb1b48 System Status: Enhance Support Information section. 2024-01-24 16:49:10 +00:00
FusionPBX 7a24e2aa1f Update app_languages.php 2024-01-24 08:26:54 -07:00
FusionPBX 8b08756e0b Add a new permission system_view_support 2024-01-24 08:18:16 -07:00
FusionPBX 560a51cff7 Security - Update session validation and regenerate session id on login 2024-01-23 23:11:28 -07:00
FusionPBX cfbfd8ab52 Update system.php fix the quotes. 2024-01-23 21:08:53 -07:00
FusionPBX 04d08eb76c Update labels 2024-01-23 16:18:11 -07:00
frytimo 4e9dd1cdc9 Create information area for bug reports or errors to the Support Team (#6876)
* initial commit for system information bug report data

* add javascript to copy to clipboard

* add javascript to copy to clipboard

* Update copy_to_clipboard.js

* Update system.php

* Update app_languages.php

Add other languages

* move function file to resources/functions directory

* use the array returned from system_information function

* Update app_languages.php

* update path locations

* remove require files

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

* create force_close_port function

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

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

* Update fax_queue.php

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

* Update app_languages.php

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

* added more translations

* fixed the wrong permission that I had originally

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

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

* Modified the code to use sched_api as requested

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

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

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

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

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

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

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

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

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

* Added Greek translations to dialplan_outbound/app_languages.php

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

* support app source update via cli

* Update app_languages.php

* Update index.php

* Refactor App Git updating

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

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

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

adding permissions for showing MAC address in the extension list

* Update extensions.php

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

* Renamed the permission to access of extension address

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

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

* Update transcribe.php

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

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

* Added Greek translations to database_transactions/app_languages.php

* Added Greek translations to destinations/app_languages.php

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

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

* Update calling mechanism for event sockets

* Update project for new singleton event sockets

* remove unused variable

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

* Update app_config.php

* Update app_config.php

* Update call_center_queue_edit.php

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

* Added Greek translations to call_recordings/app_languages.php

* Added Greek translations to active_calls/app_languages.php

* Added Greek translations to click_to_call/app_languages.php

* Added Greek translations to conference_center/app_languages.php

* Added Greek translations to conference_controls/app_languages.php

* Added Greek translations to conference_profiles/app_languages.php

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

* remove alias

* adjust line print out for field order

* refactor class name to be inline with framework standard

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

* add app_name and app_uuid as constants in class

* performance boost by removing scanning app_defaults twice

* Update app_defaults.php

* Update schema.php

---------

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

* Apply device select permissions.

* Fix missing index

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

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

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

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

* Added Greek translations to call_center_active/app_languages.php

* Added Greek translations to call_centers/app_languages.php

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

* ensure project path begins with a '/'

* rewrite for empty string in project_path

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

* Added Greek translations to basic_operator_panel/app_language.php

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

* Added Greek translations for domains/app_languages.php

* Added Greek translations for groups/app_languages.php

* Added Greek translations for menu/app_languages.php

* Added Greek translation for upgrade/app_languages.php

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

* Added Greek translations for user_settings/app_languages.php

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

* Added Greek translation for default_settings/app_languages.php

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

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

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

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

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

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

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

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

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

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

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

* Update app_menu.php

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

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

Allow to make changes to Snom intercom policy

* Updated Snom D735 template for setting the Smartlabel display mode

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

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

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

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

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

* Update app_defaults.php

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

* Update app_defaults.php

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

* Update 020_domain-variables.xml

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

---------

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

---------

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

snom D713
2023-07-27 16:07:44 -06:00
Andy Binder 74bdf82dba Update event_guard.php (#6779) 2023-07-26 14:05:57 -06:00
FusionPBX ee610ccb1b convert the message_length value to a number
Fixed this error "attempt to compare number with a string"
2023-07-25 13:12:42 -06:00
FusionPBX e40cc6efd1 Prevent an error in PHP 8.1warning 2023-07-24 14:14:48 -06:00
FusionPBX ee591e730e Use !empty function instead of != '' 2023-07-22 15:21:01 -06:00
markjcrane cd91040eb5 Prevent edge case PHP 8.1 warnings for domain_uuid and domain_name 2023-07-22 14:21:11 -06:00
markjcrane 32409f88b2 Add new default settings login_text_color, login_text_size and login_text_font 2023-07-22 14:19:57 -06:00
markjcrane 6d2eae5987 Change the default login_text_color to #282828 2023-07-22 14:18:39 -06:00
FusionPBX 1bbe9b2f8a Prevent CPU number showing more than once on BSD 2023-07-22 09:50:11 -06:00
fusionate 7dd146689f Functions: Update for PHP 8.1 2023-07-19 02:15:16 +00:00
fusionate c4f3565a15 Provisioning: Updates to resolve PHP 8.1 warnings. 2023-07-17 22:52:03 +00:00
FusionPBX 0a2d29b20d Update {$mac}.cfg 2023-07-16 16:29:45 -06:00
FusionPBX f7b1ad53cd is_writable prevents an error writing to the file if its not writable 2023-07-16 00:44:18 -06:00
FusionPBX 5e69a3deda Update xml_cdr_details.php 2023-07-15 23:59:05 -06:00
FusionPBX 64c5eeb35e Update xml_cdr_details.php 2023-07-15 23:49:55 -06:00
FusionPBX 1b6bf49a62 Update xml_cdr_details.php 2023-07-15 23:43:19 -06:00
987 changed files with 77854 additions and 158882 deletions
+2 -8
View File
@@ -118,10 +118,7 @@
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::api("reloadacl");
//redirect the user
header('Location: access_control_edit.php?id='.$id);
@@ -204,10 +201,7 @@
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::async("reloadacl");
//redirect the user
if (isset($action)) {
+4 -11
View File
@@ -40,18 +40,11 @@
//set the variables
$search = $_REQUEST['search'] ?? '';
//create event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
//run the command
$result = rtrim(event_socket_request($fp, 'api reloadacl'));
//run the command
$result = rtrim(event_socket::api('reloadacl'));
//add message
message::add($result, 'alert');
//close the connection
fclose($fp);
}
//add message
message::add($result, 'alert');
//redirect
$search = preg_replace('#[^a-zA-Z0-9_\-\.]# ', '', $search);
+5 -8
View File
@@ -34,7 +34,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
$xml_dir = $setting->get('switch','conf').'/autoload_configs';
$xml_file = $xml_dir."/acl.conf.xml";
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/switch/resources/conf/autoload_configs/acl.conf';
@@ -54,7 +54,6 @@
$xml_string .= " <node type=\"allow\" cidr=\"192.168.0.0/16\"/>\n";
$xml_string .= " </list>\n";
$xml_string .= " <list name=\"providers\" default=\"deny\">\n";
//$xml_string .= " <node type=\"allow\" domain=\"".$_SESSION['domain_name']."\"/>\n";
$xml_string .= " </list>\n";
$xml_string .= " </network-lists>\n";
$xml_string .= "</configuration>\n";
@@ -158,12 +157,10 @@
$cache->delete("configuration:sofia.conf:".gethostname());
//create the event socket connection
if (!$fp) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
}
$esl = event_socket::create();
//reload the acl
event_socket_request($fp, "api reloadacl");
event_socket::async("reloadacl");
//rescan each sip profile
$sql = "select sip_profile_name from v_sip_profiles ";
@@ -172,10 +169,10 @@
$sip_profiles = $database->select($sql, null, 'all');
if (is_array($sip_profiles)) {
foreach ($sip_profiles as $row) {
if ($fp) {
if ($esl->is_connected()) {
$command = "sofia profile '".$row['sip_profile_name']."' rescan";
//echo $command."\n";
$result = event_socket_request($fp, "api ".$command);
$result = event_socket::api($command);
//echo $result."\n";
}
}
+22
View File
@@ -6,6 +6,7 @@ $text['title-access_controls']['ar-eg'] = "عناصر التحكم في الوص
$text['title-access_controls']['de-at'] = "Zugriffskontrolle";
$text['title-access_controls']['de-ch'] = "Zugriffskontrolle";
$text['title-access_controls']['de-de'] = "Zugriffskontrolle";
$text['title-access_controls']['el-gr'] = "Έλεγχοι πρόσβασης";
$text['title-access_controls']['es-cl'] = "Controles de acceso";
$text['title-access_controls']['es-mx'] = "Controles de acceso";
$text['title-access_controls']['fr-ca'] = "Contrôle d'accès";
@@ -30,6 +31,7 @@ $text['title-access_control_nodes']['ar-eg'] = "العقد";
$text['title-access_control_nodes']['de-at'] = "Knoten";
$text['title-access_control_nodes']['de-ch'] = "Knoten";
$text['title-access_control_nodes']['de-de'] = "Knoten";
$text['title-access_control_nodes']['el-gr'] = "Κόμβοι";
$text['title-access_control_nodes']['es-cl'] = "Nodos";
$text['title-access_control_nodes']['es-mx'] = "Nodos";
$text['title-access_control_nodes']['fr-ca'] = "nœuds";
@@ -54,6 +56,7 @@ $text['title-access_control_node']['ar-eg'] = "العقدة";
$text['title-access_control_node']['de-at'] = "Netzknoten";
$text['title-access_control_node']['de-ch'] = "Netzknoten";
$text['title-access_control_node']['de-de'] = "Netzknoten";
$text['title-access_control_node']['el-gr'] = "Κόμβος";
$text['title-access_control_node']['es-cl'] = "Nodo";
$text['title-access_control_node']['es-mx'] = "Nodo";
$text['title-access_control_node']['fr-ca'] = "noeud";
@@ -78,6 +81,7 @@ $text['title-access_control']['ar-eg'] = "التحكم في الوصول";
$text['title-access_control']['de-at'] = "Zugangskontrolle";
$text['title-access_control']['de-ch'] = "Zugangskontrolle";
$text['title-access_control']['de-de'] = "Zugangskontrolle";
$text['title-access_control']['el-gr'] = "Έλεγχος πρόσβασης";
$text['title-access_control']['es-cl'] = "Control de acceso";
$text['title-access_control']['es-mx'] = "Control de acceso";
$text['title-access_control']['fr-ca'] = "Contrôle d'accès";
@@ -102,6 +106,7 @@ $text['title_description-access_controls']['ar-eg'] = "قائمة التحكم
$text['title_description-access_controls']['de-at'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-ch'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-de'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['el-gr'] = "Access control list can allow or deny ranges of IP addresses";
$text['title_description-access_controls']['es-cl'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['es-mx'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
@@ -126,6 +131,7 @@ $text['label-node_type']['ar-eg'] = "اكتب";
$text['label-node_type']['de-at'] = "Art";
$text['label-node_type']['de-ch'] = "Art";
$text['label-node_type']['de-de'] = "Art";
$text['label-node_type']['el-gr'] = "Τύπος";
$text['label-node_type']['es-cl'] = "Escribe";
$text['label-node_type']['es-mx'] = "Escribe";
$text['label-node_type']['fr-ca'] = "Type";
@@ -150,6 +156,7 @@ $text['label-node_domain']['ar-eg'] = "مجال";
$text['label-node_domain']['de-at'] = "Domäne";
$text['label-node_domain']['de-ch'] = "Domäne";
$text['label-node_domain']['de-de'] = "Domäne";
$text['label-node_domain']['el-gr'] = "Τομέα";
$text['label-node_domain']['es-cl'] = "Dominio";
$text['label-node_domain']['es-mx'] = "Dominio";
$text['label-node_domain']['fr-ca'] = "Domaine";
@@ -174,6 +181,7 @@ $text['label-node_description']['ar-eg'] = "وصف";
$text['label-node_description']['de-at'] = "Beschreibung";
$text['label-node_description']['de-ch'] = "Beschreibung";
$text['label-node_description']['de-de'] = "Beschreibung";
$text['label-node_description']['el-gr'] = "Περιγραφή";
$text['label-node_description']['es-cl'] = "Descripción";
$text['label-node_description']['es-mx'] = "Descripción";
$text['label-node_description']['fr-ca'] = "Description";
@@ -198,6 +206,7 @@ $text['label-node_cidr']['ar-eg'] = "CIDR";
$text['label-node_cidr']['de-at'] = "CIDR";
$text['label-node_cidr']['de-ch'] = "CIDR";
$text['label-node_cidr']['de-de'] = "CIDR";
$text['label-node_cidr']['el-gr'] = "CIDR";
$text['label-node_cidr']['es-cl'] = "CIDR";
$text['label-node_cidr']['es-mx'] = "CIDR";
$text['label-node_cidr']['fr-ca'] = "CIDR";
@@ -222,6 +231,7 @@ $text['label-deny']['ar-eg'] = "تنكر";
$text['label-deny']['de-at'] = "verbieten";
$text['label-deny']['de-ch'] = "verbieten";
$text['label-deny']['de-de'] = "verbieten";
$text['label-deny']['el-gr'] = "αρνούμαι";
$text['label-deny']['es-cl'] = "Negar";
$text['label-deny']['es-mx'] = "Negar";
$text['label-deny']['fr-ca'] = "nier";
@@ -246,6 +256,7 @@ $text['label-allow']['ar-eg'] = "السماح";
$text['label-allow']['de-at'] = "erlauben";
$text['label-allow']['de-ch'] = "erlauben";
$text['label-allow']['de-de'] = "erlauben";
$text['label-allow']['el-gr'] = "επιτρέπω";
$text['label-allow']['es-cl'] = "Permitir";
$text['label-allow']['es-mx'] = "Permitir";
$text['label-allow']['fr-ca'] = "permettre";
@@ -270,6 +281,7 @@ $text['label-access_control_name']['ar-eg'] = "اسم";
$text['label-access_control_name']['de-at'] = "Name";
$text['label-access_control_name']['de-ch'] = "Name";
$text['label-access_control_name']['de-de'] = "Name";
$text['label-access_control_name']['el-gr'] = "Ονομα";
$text['label-access_control_name']['es-cl'] = "Nombre";
$text['label-access_control_name']['es-mx'] = "Nombre";
$text['label-access_control_name']['fr-ca'] = "Nom";
@@ -294,6 +306,7 @@ $text['label-access_control_default']['ar-eg'] = "افتراضي";
$text['label-access_control_default']['de-at'] = "Standard";
$text['label-access_control_default']['de-ch'] = "Standard";
$text['label-access_control_default']['de-de'] = "Standard";
$text['label-access_control_default']['el-gr'] = "Προκαθορισμένο";
$text['label-access_control_default']['es-cl'] = "Defecto";
$text['label-access_control_default']['es-mx'] = "Defecto";
$text['label-access_control_default']['fr-ca'] = "Par défaut";
@@ -318,6 +331,7 @@ $text['label-access_control_nodes']['ar-eg'] = "العقد";
$text['label-access_control_nodes']['de-at'] = "Knoten";
$text['label-access_control_nodes']['de-ch'] = "Knoten";
$text['label-access_control_nodes']['de-de'] = "Knoten";
$text['label-access_control_nodes']['el-gr'] = "Κόμβοι";
$text['label-access_control_nodes']['es-cl'] = "Nodos";
$text['label-access_control_nodes']['es-mx'] = "Nodos";
$text['label-access_control_nodes']['fr-ca'] = "nœuds";
@@ -342,6 +356,7 @@ $text['label-access_control_description']['ar-eg'] = "وصف";
$text['label-access_control_description']['de-at'] = "Beschreibung";
$text['label-access_control_description']['de-ch'] = "Beschreibung";
$text['label-access_control_description']['de-de'] = "Beschreibung";
$text['label-access_control_description']['el-gr'] = "Περιγραφή";
$text['label-access_control_description']['es-cl'] = "Descripción";
$text['label-access_control_description']['es-mx'] = "Descripción";
$text['label-access_control_description']['fr-ca'] = "Description";
@@ -366,6 +381,7 @@ $text['description-node_type']['ar-eg'] = "حدد نوع.";
$text['description-node_type']['de-at'] = "Wählen Sie den Typ.";
$text['description-node_type']['de-ch'] = "Wählen Sie den Typ.";
$text['description-node_type']['de-de'] = "Wählen Sie den Typ.";
$text['description-node_type']['el-gr'] = "Επιλέξτε τον τύπο";
$text['description-node_type']['es-cl'] = "Seleccione el tipo.";
$text['description-node_type']['es-mx'] = "Seleccione el tipo.";
$text['description-node_type']['fr-ca'] = "Sélectionnez le type";
@@ -390,6 +406,7 @@ $text['description-node_domain']['ar-eg'] = "أدخل اسم المجال.";
$text['description-node_domain']['de-at'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['de-ch'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['de-de'] = "Geben Sie den Domain-Namen.";
$text['description-node_domain']['el-gr'] = "Εισαγάγετε το όνομα τομέα.";
$text['description-node_domain']['es-cl'] = "Introduzca el nombre de dominio.";
$text['description-node_domain']['es-mx'] = "Introduzca el nombre de dominio.";
$text['description-node_domain']['fr-ca'] = "Entrez le nom de domaine.";
@@ -414,6 +431,7 @@ $text['description-node_description']['ar-eg'] = "أدخل الوصف.";
$text['description-node_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-node_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-node_description']['es-cl'] = "Introduzca la descripción.";
$text['description-node_description']['es-mx'] = "Introduzca la descripción.";
$text['description-node_description']['fr-ca'] = "Entrez la description.";
@@ -438,6 +456,7 @@ $text['description-node_cidr']['ar-eg'] = "أدخل نطاق IP CIDR.";
$text['description-node_cidr']['de-at'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['de-ch'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['de-de'] = "Geben Sie die IP CIDR-Bereich an.";
$text['description-node_cidr']['el-gr'] = "Εισαγάγετε το εύρος IP CIDR.";
$text['description-node_cidr']['es-cl'] = "Introduzca el rango de direcciones IP CIDR.";
$text['description-node_cidr']['es-mx'] = "Introduzca el rango de direcciones IP CIDR.";
$text['description-node_cidr']['fr-ca'] = "Entrez la plage IP CIDR.";
@@ -462,6 +481,7 @@ $text['description-access_control_name']['ar-eg'] = "أدخل اسم.";
$text['description-access_control_name']['de-at'] = "Namen eingeben.";
$text['description-access_control_name']['de-ch'] = "Namen eingeben.";
$text['description-access_control_name']['de-de'] = "Namen eingeben.";
$text['description-access_control_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-access_control_name']['es-cl'] = "Introduzca el nombre.";
$text['description-access_control_name']['es-mx'] = "Introduzca el nombre.";
$text['description-access_control_name']['fr-ca'] = "Entrez le nom.";
@@ -486,6 +506,7 @@ $text['description-access_control_description']['ar-eg'] = "دخل وصف";
$text['description-access_control_description']['de-at'] = "Beschreibung eingeben.";
$text['description-access_control_description']['de-ch'] = "Beschreibung eingeben.";
$text['description-access_control_description']['de-de'] = "Beschreibung eingeben.";
$text['description-access_control_description']['el-gr'] = "Εισαγάγετε την περιγραφή";
$text['description-access_control_description']['es-cl'] = "Introduzca la descripción";
$text['description-access_control_description']['es-mx'] = "Introduzca la descripción";
$text['description-access_control_description']['fr-ca'] = "Entrez la description.";
@@ -510,6 +531,7 @@ $text['description-access_control_default']['ar-eg'] = "حدد نوع الافت
$text['description-access_control_default']['de-at'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['de-ch'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['de-de'] = "Wählen Sie den Standardtyp.";
$text['description-access_control_default']['el-gr'] = "Επιλέξτε τον προεπιλεγμένο τύπο.";
$text['description-access_control_default']['es-cl'] = "Seleccione el tipo de defecto.";
$text['description-access_control_default']['es-mx'] = "Seleccione el tipo de defecto.";
$text['description-access_control_default']['fr-ca'] = "Sélectionnez le type de défaut";
@@ -87,10 +87,7 @@ if (!class_exists('access_controls')) {
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::async("reloadacl");
//set message
message::add($text['message-delete']);
@@ -146,10 +143,7 @@ if (!class_exists('access_controls')) {
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::async("reloadacl");
//set message
message::add($text['message-delete']);
@@ -261,10 +255,7 @@ if (!class_exists('access_controls')) {
$cache->delete("configuration:acl.conf");
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
event_socket_request($fp, "api reloadacl");
}
event_socket::async("reloadacl");
//set message
message::add($text['message-copy']);
+23 -2
View File
@@ -6,6 +6,7 @@ $text['title-operator_panel']['ar-eg'] = "لوحة المشغل";
$text['title-operator_panel']['de-at'] = "Bedienfeld";
$text['title-operator_panel']['de-ch'] = "Bedienfeld";
$text['title-operator_panel']['de-de'] = "Bedienfeld";
$text['title-operator_panel']['el-gr'] = "Πίνακας χειριστή";
$text['title-operator_panel']['es-cl'] = "Panel de Operador";
$text['title-operator_panel']['es-mx'] = "Panel de Operador";
$text['title-operator_panel']['fr-ca'] = "Panneau de commande";
@@ -30,6 +31,7 @@ $text['label-status_on_demand']['ar-eg'] = "على الطلب";
$text['label-status_on_demand']['de-at'] = "Bei Bedarf";
$text['label-status_on_demand']['de-ch'] = "Bei Bedarf";
$text['label-status_on_demand']['de-de'] = "Bei Bedarf";
$text['label-status_on_demand']['el-gr'] = "Κατα παραγγελια";
$text['label-status_on_demand']['es-cl'] = "A Pedido";
$text['label-status_on_demand']['es-mx'] = "A Pedido";
$text['label-status_on_demand']['fr-ca'] = "Sur Demande";
@@ -54,6 +56,7 @@ $text['label-status_on_break']['ar-eg'] = "في استراحة";
$text['label-status_on_break']['de-at'] = "In Pause";
$text['label-status_on_break']['de-ch'] = "In Pause";
$text['label-status_on_break']['de-de'] = "In Pause";
$text['label-status_on_break']['el-gr'] = "Σε διάλειμμα";
$text['label-status_on_break']['es-cl'] = "En Pausa";
$text['label-status_on_break']['es-mx'] = "En Pausa";
$text['label-status_on_break']['fr-ca'] = "En Pause";
@@ -78,6 +81,7 @@ $text['label-status_logged_out_or_unknown']['ar-eg'] = "تم تسجيل الخر
$text['label-status_logged_out_or_unknown']['de-at'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['de-ch'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['de-de'] = "Abgemeldet / Unbekannt";
$text['label-status_logged_out_or_unknown']['el-gr'] = "Αποσυνδέθηκε / άγνωστο";
$text['label-status_logged_out_or_unknown']['es-cl'] = "Desconectado / Desconocido";
$text['label-status_logged_out_or_unknown']['es-mx'] = "Desconectado / Desconocido";
$text['label-status_logged_out_or_unknown']['fr-ca'] = "Déconnexion / Unknown";
@@ -102,6 +106,7 @@ $text['label-status_logged_out']['ar-eg'] = "تسجيل الخروج";
$text['label-status_logged_out']['de-at'] = "Abgemeldet";
$text['label-status_logged_out']['de-ch'] = "Abgemeldet";
$text['label-status_logged_out']['de-de'] = "Abgemeldet";
$text['label-status_logged_out']['el-gr'] = "Αποσυνδέθηκα";
$text['label-status_logged_out']['es-cl'] = "Desconectado";
$text['label-status_logged_out']['es-mx'] = "Desconectado";
$text['label-status_logged_out']['fr-ca'] = "Déconnexion";
@@ -126,6 +131,7 @@ $text['label-status_do_not_disturb']['ar-eg'] = "لا تخل";
$text['label-status_do_not_disturb']['de-at'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['de-ch'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['de-de'] = "Bitte nicht Stören";
$text['label-status_do_not_disturb']['el-gr'] = "Μην ενοχλείτε";
$text['label-status_do_not_disturb']['es-cl'] = "No Molestar";
$text['label-status_do_not_disturb']['es-mx'] = "No Molestar";
$text['label-status_do_not_disturb']['fr-ca'] = "Ne pas Déranger";
@@ -150,6 +156,7 @@ $text['label-status_available_on_demand']['ar-eg'] = "متاح (عند الطل
$text['label-status_available_on_demand']['de-at'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['de-ch'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['de-de'] = "Verfügbar (Bei Bedarf)";
$text['label-status_available_on_demand']['el-gr'] = "Διαθέσιμο (κατόπιν αιτήματος)";
$text['label-status_available_on_demand']['es-cl'] = "Disponible (A Pedido)";
$text['label-status_available_on_demand']['es-mx'] = "Disponible (A Pedido)";
$text['label-status_available_on_demand']['fr-ca'] = "Disponible (sur demande)";
@@ -174,6 +181,7 @@ $text['label-status_available']['ar-eg'] = "متاح";
$text['label-status_available']['de-at'] = "Verfügbar";
$text['label-status_available']['de-ch'] = "Verfügbar";
$text['label-status_available']['de-de'] = "Verfügbar";
$text['label-status_available']['el-gr'] = "Διαθέσιμος";
$text['label-status_available']['es-cl'] = "Disponible";
$text['label-status_available']['es-mx'] = "Disponible";
$text['label-status_available']['fr-ca'] = "Disponible";
@@ -198,6 +206,7 @@ $text['label-refresh_pause']['ar-eg'] = "وقفة التحديث";
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-de'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['el-gr'] = "Ανανέωση";
$text['label-refresh_pause']['es-cl'] = "Actualizar Pausa";
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa";
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser";
@@ -222,6 +231,7 @@ $text['label-refresh_enable']['ar-eg'] = "تمكين التحديث";
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-de'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['el-gr'] = "Ενεργοποίηση ανανέωσης";
$text['label-refresh_enable']['es-cl'] = "Activar Actualizar";
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar";
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser";
@@ -246,6 +256,7 @@ $text['label-recording']['ar-eg'] = "تسجيل";
$text['label-recording']['de-at'] = "Aufnahme";
$text['label-recording']['de-ch'] = "Aufnahme";
$text['label-recording']['de-de'] = "Aufnahme";
$text['label-recording']['el-gr'] = "Εγγραφή";
$text['label-recording']['es-cl'] = "Grabación de Llamadas";
$text['label-recording']['es-mx'] = "Grabación de Llamadas";
$text['label-recording']['fr-ca'] = "Enregistrement de L'appel";
@@ -270,6 +281,7 @@ $text['label-record']['ar-eg'] = "سِجِلّ";
$text['label-record']['de-at'] = "Aufnehmen";
$text['label-record']['de-ch'] = "Aufnehmen";
$text['label-record']['de-de'] = "Aufnehmen";
$text['label-record']['el-gr'] = "Ρεκόρ";
$text['label-record']['es-cl'] = "Registro";
$text['label-record']['es-mx'] = "Registro";
$text['label-record']['fr-ca'] = "Enregistrer";
@@ -294,6 +306,7 @@ $text['label-other_extensions']['ar-eg'] = "ملحقات أخرى";
$text['label-other_extensions']['de-at'] = "Andere Nebenstellen";
$text['label-other_extensions']['de-ch'] = "Andere Nebenstellen";
$text['label-other_extensions']['de-de'] = "Andere Nebenstellen";
$text['label-other_extensions']['el-gr'] = "Άλλες επεκτάσεις";
$text['label-other_extensions']['es-cl'] = "Otras Extensiones";
$text['label-other_extensions']['es-mx'] = "Otras Extensiones";
$text['label-other_extensions']['fr-ca'] = "Autres Extensions";
@@ -318,6 +331,7 @@ $text['label-no_extensions_found']['ar-eg'] = "لم يتم العثور على
$text['label-no_extensions_found']['de-at'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['de-ch'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['de-de'] = "Keine Nebenstellen gefunden.";
$text['label-no_extensions_found']['el-gr'] = "Δεν βρέθηκαν επεκτάσεις.";
$text['label-no_extensions_found']['es-cl'] = "No hay extensiones encontrados.";
$text['label-no_extensions_found']['es-mx'] = "No hay extensiones encontrados.";
$text['label-no_extensions_found']['fr-ca'] = "Aucun extensions trouvés.";
@@ -342,6 +356,7 @@ $text['label-hangup']['ar-eg'] = "تشبث";
$text['label-hangup']['de-at'] = "Abwürgen";
$text['label-hangup']['de-ch'] = "Abwürgen";
$text['label-hangup']['de-de'] = "Abwürgen";
$text['label-hangup']['el-gr'] = "Κονάνθρωπος";
$text['label-hangup']['es-cl'] = "Finalizar Llamada";
$text['label-hangup']['es-mx'] = "Finalizar Llamada";
$text['label-hangup']['fr-ca'] = "Tuer Appel";
@@ -366,6 +381,7 @@ $text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionner";
@@ -390,6 +406,7 @@ $text['label-call_group']['ar-eg'] = "مجموعة الاتصال";
$text['label-call_group']['de-at'] = "Rufgruppe";
$text['label-call_group']['de-ch'] = "Rufgruppe";
$text['label-call_group']['de-de'] = "Rufgruppe";
$text['label-call_group']['el-gr'] = "Ομάδα κλήσεων";
$text['label-call_group']['es-cl'] = "Llamar a Grupo";
$text['label-call_group']['es-mx'] = "Llamar a Grupo";
$text['label-call_group']['fr-ca'] = "Groupe d'appel";
@@ -414,6 +431,7 @@ $text['label-call_direction']['ar-eg'] = "اتجاه الاتصال";
$text['label-call_direction']['de-at'] = "Anruf Richtung";
$text['label-call_direction']['de-ch'] = "Anruf Richtung";
$text['label-call_direction']['de-de'] = "Anruf Richtung";
$text['label-call_direction']['el-gr'] = "Κατεύθυνση κλήσεων";
$text['label-call_direction']['es-cl'] = "Dirección de la llamada";
$text['label-call_direction']['es-mx'] = "Dirección de la llamada";
$text['label-call_direction']['fr-ca'] = "Sens de l'appel";
@@ -438,11 +456,12 @@ $text['label-filter']['ar-eg'] = "فيلم";
$text['label-filter']['de-at'] = "Filter...";
$text['label-filter']['de-ch'] = "Filter...";
$text['label-filter']['de-de'] = "Filter...";
$text['label-filter']['el-gr'] = "Φίλτρο...";
$text['label-filter']['es-cl'] = "Filtro...";
$text['label-filter']['es-mx'] = "Filtro...";
$text['label-filter']['fr-ca'] = "Filtre...";
$text['label-filter']['fr-fr'] = "Filtre...";
$text['label-filter']['he-il'] = "Filter...";
$text['label-filter']['he-il'] = "לְסַנֵן...";
$text['label-filter']['it-it'] = "Filtro...";
$text['label-filter']['nl-nl'] = "Filter...";
$text['label-filter']['pl-pl'] = "Filter...";
@@ -462,6 +481,7 @@ $text['description-eavesdrop_destination']['ar-eg'] = "حدد وجهة Eavesdrop
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-de'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['el-gr'] = "Επιλέξτε τον προορισμό EAVESDROP";
$text['description-eavesdrop_destination']['es-cl'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage";
@@ -486,6 +506,7 @@ $text['button-all']['ar-eg'] = "الجميع";
$text['button-all']['de-at'] = "Alle";
$text['button-all']['de-ch'] = "Alle";
$text['button-all']['de-de'] = "Alle";
$text['button-all']['el-gr'] = "Ολα";
$text['button-all']['es-cl'] = "Todos";
$text['button-all']['es-mx'] = "Todos";
$text['button-all']['fr-ca'] = "Tous";
@@ -504,4 +525,4 @@ $text['button-all']['zh-cn'] = "全部";
$text['button-all']['ja-jp'] = "全て";
$text['button-all']['ko-kr'] = "모두";
?>
?>
+2 -2
View File
@@ -57,7 +57,7 @@ if (count($_GET) > 0) {
$direction = trim($_GET["direction"] ?? '');
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//allow specific commands
if (!empty($switch_cmd)) {
@@ -99,7 +99,7 @@ if (count($_GET) > 0) {
}
//run the command
$switch_result = event_socket_request($fp, 'api '.$api_cmd);
$switch_result = event_socket::api($api_cmd);
/*
//record stop
+11 -15
View File
@@ -97,15 +97,15 @@
//update the user_status
if (is_uuid($call_center_agent_uuid)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
$switch_cmd .= "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
//update the user state
if (is_uuid($call_center_agent_uuid)) {
$cmd = "api callcenter_config agent set state ".$call_center_agent_uuid." Waiting";
$response = event_socket_request($fp, $cmd);
$response = event_socket::api($cmd);
}
//update do not disturb
@@ -349,11 +349,11 @@ unset($refresh_default);
//refresh controls
function refresh_stop() {
clearInterval(interval_timer_id);
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">"; }
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_enable'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>"; }
}
function refresh_start() {
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()']); ?>"; }
refresh_stop();
interval_timer_id = setInterval( function() {
url = source_url;
@@ -405,7 +405,7 @@ unset($refresh_default);
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid, document.getElementById('eavesdrop_dest').value);
if (cmd != '') {
send_cmd(cmd)
send_cmd(cmd);
}
}
}
@@ -430,7 +430,7 @@ unset($refresh_default);
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
}
//hide/show destination input field
@@ -588,15 +588,11 @@ if (is_array($_SESSION['user']['extension'])) {
}
}
?>
<div id='ajax_reponse'></div>
<div id='cmd_reponse' style='display: none;'></div>
<br><br>
<?php
echo "<div id='ajax_reponse'></div>\n";
echo "<div id='cmd_response' style='display: none;'></div>\n";
echo "<br><br>\n";
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -86,10 +86,12 @@ if (!class_exists('basic_operator_panel')) {
}
//send the command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api show channels as json');
$switch_result = event_socket::api('show channels as json');
if ($switch_result !== false) {
$fp = true;
$json_array = json_decode($switch_result, true);
} else {
$fp = false;
}
//build the response
@@ -205,8 +207,10 @@ if (!class_exists('basic_operator_panel')) {
if ($fp) {
if (is_uuid($field['uuid'])) {
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
$dump_array = json_decode($dump_result, true);
$dump_result = event_socket::api($switch_cmd);
if ($dump_result !== false) {
$dump_array = json_decode($dump_result, true);
}
if (is_array($dump_array)) {
foreach ($dump_array as $dump_var_name => $dump_var_value) {
$array[$x][$dump_var_name] = $dump_var_value;
+11 -10
View File
@@ -64,9 +64,8 @@ if (!empty($groups)) {
}
//get the valet info
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$valet_info = event_socket_request($fp, 'api valet_info park@'.$_SESSION['domain_name']);
$valet_info = event_socket::api('valet_info park@'.$_SESSION['domain_name']);
if ($valet_info !== false) {
//get an array of the valet call uuid and park numbers
if (isset($valet_info)) {
@@ -78,10 +77,10 @@ if ($fp) {
//unset($_SESSION['valet']);
foreach($valet_matches as $row) {
if (!isset($_SESSION['valet']['uuid']['caller_id_name'])) {
$_SESSION['valet'][$row[1]]['caller_id_name'] = event_socket_request($fp, 'api uuid_getvar '.$row[1].' caller_id_name');
$_SESSION['valet'][$row[1]]['caller_id_name'] = event_socket::api('uuid_getvar '.$row[1].' caller_id_name');
}
if (!isset($_SESSION['valet']['uuid']['caller_id_number'])) {
$_SESSION['valet'][$row[1]]['caller_id_number'] = event_socket_request($fp, 'api uuid_getvar '.$row[1].' caller_id_number');
$_SESSION['valet'][$row[1]]['caller_id_number'] = event_socket::api('uuid_getvar '.$row[1].' caller_id_number');
}
}
@@ -155,8 +154,8 @@ echo " </td>\n";
echo " <td valign='top' align='right' width='50%' nowrap>\n";
echo " <table cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>\n";
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">\n";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
echo " </td>\n";
if (permission_exists('operator_panel_eavesdrop')) {
@@ -165,8 +164,10 @@ if (permission_exists('operator_panel_eavesdrop')) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : escape($_REQUEST['eavesdrop_dest']))."\">\n";
echo " <img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 0px 5px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'>\n";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
if (is_array($_SESSION['user']['extensions'])) foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
if (is_array($_SESSION['user']['extensions'])) {
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
}
}
echo " </select>\n";
}
@@ -429,7 +430,7 @@ 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 = "<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 .= " <tr>\n";
$block .= " <td class='op_ext_icon'>\n";
+64 -2
View File
@@ -3,9 +3,9 @@
//application details
$apps[$x]['name'] = 'Bridges';
$apps[$x]['uuid'] = 'a6a7c4c5-340a-43ce-bcbc-2ed9bab8659d';
$apps[$x]['category'] = '';
$apps[$x]['category'] = 'switch';
$apps[$x]['subcategory'] = '';
$apps[$x]['version'] = '';
$apps[$x]['version'] = '1.2';
$apps[$x]['license'] = 'Mozilla Public License 1.1';
$apps[$x]['url'] = 'http://www.fusionpbx.com';
$apps[$x]['description']['en-us'] = '';
@@ -36,6 +36,9 @@
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$apps[$x]['permissions'][$y]['groups'][] = 'admin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'bridge_import';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
//destination details
$y = 0;
@@ -46,6 +49,7 @@
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and bridge_enabled = 'true'";
$apps[$x]['destinations'][$y]['order_by'] = "bridge_name asc";
$apps[$x]['destinations'][$y]['field']['bridge_uuid'] = "bridge_uuid";
$apps[$x]['destinations'][$y]['field']['uuid'] = "bridge_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "bridge_name";
$apps[$x]['destinations'][$y]['field']['description'] = "bridge_description";
$apps[$x]['destinations'][$y]['field']['destination'] = "bridge_destination";
@@ -117,4 +121,62 @@
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
//default settings
$y=0;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ebe37151-bbd0-4bf3-9c01-7a831943cb86";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'user';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9a64c041-0dcd-4eee-b196-6f300b87dff8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'gateway';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a082511d-cc2f-4b8a-a49c-f505971ef80f";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'profile';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f5b659a5-a375-4207-b3d1-cad5b3336f2e";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "action";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'loopback';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b97e4810-8a04-4305-9cd8-a43c57c71703";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'accountcode';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0d1b5374-9c7a-46a5-9a08-d32fd42d6f06";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'effective_caller_id_number';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "bdf5e430-ac50-4a15-b59d-b0c8a78fd410";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "bridge";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "variable";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = 'call_direction=outbound';
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
?>
+314 -3
View File
@@ -6,6 +6,7 @@ $text['title-bridges']['ar-eg'] = "الجسور";
$text['title-bridges']['de-at'] = "Brücken";
$text['title-bridges']['de-ch'] = "Brücken";
$text['title-bridges']['de-de'] = "Brücken";
$text['title-bridges']['el-gr'] = "Γέφυρες";
$text['title-bridges']['es-cl'] = "Puentes";
$text['title-bridges']['es-mx'] = "Puentes";
$text['title-bridges']['fr-ca'] = "Ponts";
@@ -30,6 +31,7 @@ $text['title-bridge']['ar-eg'] = "كوبري";
$text['title-bridge']['de-at'] = "Brücke";
$text['title-bridge']['de-ch'] = "Brücke";
$text['title-bridge']['de-de'] = "Brücke";
$text['title-bridge']['el-gr'] = "Γέφυρα";
$text['title-bridge']['es-cl'] = "Puente";
$text['title-bridge']['es-mx'] = "Puente";
$text['title-bridge']['fr-ca'] = "Pont";
@@ -54,6 +56,7 @@ $text['title_description-bridge']['ar-eg'] = "إضافة عبارات الجسر
$text['title_description-bridge']['de-at'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['de-ch'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['de-de'] = "Bridge-Anweisungen zur Zielauswahlliste hinzufügen.";
$text['title_description-bridge']['el-gr'] = "Προσθέστε δηλώσεις γέφυρας στη λίστα επιλογής προορισμού.";
$text['title_description-bridge']['es-cl'] = "Agregue declaraciones de puente a la lista de selección de destino.";
$text['title_description-bridge']['es-mx'] = "Agregue declaraciones de puente a la lista de selección de destino.";
$text['title_description-bridge']['fr-ca'] = "Ajouter des déclarations de pont à la liste de sélection";
@@ -72,12 +75,38 @@ $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_name']['en-us'] = "Name";
$text['label-bridge_name']['en-gb'] = "Name";
$text['label-bridge_name']['ar-eg'] = "اسم";
$text['label-bridge_name']['de-at'] = "Name";
$text['label-bridge_name']['de-ch'] = "Name";
$text['label-bridge_name']['de-de'] = "Name";
$text['label-bridge_name']['el-gr'] = "Ονομα";
$text['label-bridge_name']['es-cl'] = "Nombre";
$text['label-bridge_name']['es-mx'] = "Nombre";
$text['label-bridge_name']['fr-ca'] = "Nom";
@@ -102,6 +131,7 @@ $text['description-bridge_name']['ar-eg'] = "أدخل الاسم.";
$text['description-bridge_name']['de-at'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['de-ch'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['de-de'] = "Geben Sie den Namen ein.";
$text['description-bridge_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-bridge_name']['es-cl'] = "Introduzca el nombre.";
$text['description-bridge_name']['es-mx'] = "Introduzca el nombre.";
$text['description-bridge_name']['fr-ca'] = "Entrez le nom";
@@ -120,12 +150,63 @@ $text['description-bridge_name']['zh-cn'] = "输入名称。";
$text['description-bridge_name']['ja-jp'] = "名前を入力します。";
$text['description-bridge_name']['ko-kr'] = "이름을 입력하세요.";
$text['label-bridge_action']['en-us'] = "Action";
$text['label-bridge_action']['en-gb'] = "Action";
$text['label-bridge_action']['ar-eg'] = "الإجراء";
$text['label-bridge_action']['de-at'] = "Aktion";
$text['label-bridge_action']['de-ch'] = "Aktion";
$text['label-bridge_action']['de-de'] = "Aktion";
$text['label-bridge_action']['el-gr'] = "Δράση";
$text['label-bridge_action']['es-cl'] = "Acción";
$text['label-bridge_action']['es-mx'] = "Acción";
$text['label-bridge_action']['fr-ca'] = "Action";
$text['label-bridge_action']['fr-fr'] = "Action";
$text['label-bridge_action']['he-il'] = "פעולה";
$text['label-bridge_action']['it-it'] = "Azione";
$text['label-bridge_action']['nl-nl'] = "Aktie";
$text['label-bridge_action']['pl-pl'] = "Operacja";
$text['label-bridge_action']['pt-br'] = "Ação";
$text['label-bridge_action']['pt-pt'] = "Acção";
$text['label-bridge_action']['ro-ro'] = "Acțiune";
$text['label-bridge_action']['ru-ru'] = "Действие";
$text['label-bridge_action']['sv-se'] = "Aktion";
$text['label-bridge_action']['uk-ua'] = "Дія";
$text['label-bridge_action']['zh-cn'] = "行动";
$text['label-bridge_action']['ja-jp'] = "アクション";
$text['label-bridge_action']['ko-kr'] = "행동";
$text['description-bridge_action']['en-us'] = "Select the bridge action.";
$text['description-bridge_action']['en-gb'] = "Select the bridge action.";
$text['description-bridge_action']['ar-eg'] = "حدد إجراء الجسر.";
$text['description-bridge_action']['de-at'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['de-ch'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['de-de'] = "Wählen Sie die Bridge-Aktion aus.";
$text['description-bridge_action']['el-gr'] = "Επιλέξτε τη δράση γέφυρας.";
$text['description-bridge_action']['es-cl'] = "Seleccione la acción del puente.";
$text['description-bridge_action']['es-mx'] = "Seleccione la acción del puente.";
$text['description-bridge_action']['fr-ca'] = "Sélectionnez l'action de pont.";
$text['description-bridge_action']['fr-fr'] = "Sélectionnez l'action de pont.";
$text['description-bridge_action']['he-il'] = "בחר את פעולת הגשר.";
$text['description-bridge_action']['it-it'] = "Seleziona l'azione del ponte.";
$text['description-bridge_action']['nl-nl'] = "Selecteer de brugactie.";
$text['description-bridge_action']['pl-pl'] = "Wybierz akcję mostu.";
$text['description-bridge_action']['pt-br'] = "Selecione a ação da ponte.";
$text['description-bridge_action']['pt-pt'] = "Selecione a ação da ponte.";
$text['description-bridge_action']['ro-ro'] = "Selectați acțiunea bridge.";
$text['description-bridge_action']['ru-ru'] = "Выберите действие моста.";
$text['description-bridge_action']['sv-se'] = "Välj broåtgärd.";
$text['description-bridge_action']['uk-ua'] = "Виберіть дію моста.";
$text['description-bridge_action']['zh-cn'] = "选择桥接动作。";
$text['description-bridge_action']['ja-jp'] = "ブリッジアクションを選択します。";
$text['description-bridge_action']['ko-kr'] = "브리지 작업을 선택합니다.";
$text['label-bridge_destination']['en-us'] = "Destination";
$text['label-bridge_destination']['en-gb'] = "Destination";
$text['label-bridge_destination']['ar-eg'] = "وجهة";
$text['label-bridge_destination']['de-at'] = "Ziel";
$text['label-bridge_destination']['de-ch'] = "Ziel";
$text['label-bridge_destination']['de-de'] = "Ziel";
$text['label-bridge_destination']['el-gr'] = "Προορισμός";
$text['label-bridge_destination']['es-cl'] = "Destino";
$text['label-bridge_destination']['es-mx'] = "Destino";
$text['label-bridge_destination']['fr-ca'] = "Destination";
@@ -150,6 +231,7 @@ $text['description-bridge_destination']['ar-eg'] = "أدخل الوجهة.";
$text['description-bridge_destination']['de-at'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['de-ch'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['de-de'] = "Geben Sie das Ziel ein.";
$text['description-bridge_destination']['el-gr'] = "Εισαγάγετε τον προορισμό.";
$text['description-bridge_destination']['es-cl'] = "Introduce el destino.";
$text['description-bridge_destination']['es-mx'] = "Introduce el destino.";
$text['description-bridge_destination']['fr-ca'] = "Entrer la destination";
@@ -171,9 +253,10 @@ $text['description-bridge_destination']['ko-kr'] = "목적지를 입력하세요
$text['label-bridge_enabled']['en-us'] = "Enabled";
$text['label-bridge_enabled']['en-gb'] = "Enabled";
$text['label-bridge_enabled']['ar-eg'] = "ممكن";
$text['label-bridge_enabled']['de-at'] = "Ermöglicht";
$text['label-bridge_enabled']['de-ch'] = "Ermöglicht";
$text['label-bridge_enabled']['de-de'] = "Ermöglicht";
$text['label-bridge_enabled']['de-at'] = "Aktiviert";
$text['label-bridge_enabled']['de-ch'] = "Aktiviert";
$text['label-bridge_enabled']['de-de'] = "Aktiviert";
$text['label-bridge_enabled']['el-gr'] = "Ενεργοποιημένος";
$text['label-bridge_enabled']['es-cl'] = "Activada";
$text['label-bridge_enabled']['es-mx'] = "Activada";
$text['label-bridge_enabled']['fr-ca'] = "Activé";
@@ -198,6 +281,7 @@ $text['description-bridge_enabled']['ar-eg'] = "حدد للتمكين أو ال
$text['description-bridge_enabled']['de-at'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['de-ch'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['de-de'] = "Wählen Sie zum Aktivieren oder Deaktivieren.";
$text['description-bridge_enabled']['el-gr'] = "Επιλέξτε για να ενεργοποιήσετε ή να απενεργοποιήσετε.";
$text['description-bridge_enabled']['es-cl'] = "Seleccione para habilitar o deshabilitar.";
$text['description-bridge_enabled']['es-mx'] = "Seleccione para habilitar o deshabilitar.";
$text['description-bridge_enabled']['fr-ca'] = "Sélectionnez pour activer ou désactiver";
@@ -222,6 +306,7 @@ $text['label-bridge_description']['ar-eg'] = "وصف";
$text['label-bridge_description']['de-at'] = "Beschreibung";
$text['label-bridge_description']['de-ch'] = "Beschreibung";
$text['label-bridge_description']['de-de'] = "Beschreibung";
$text['label-bridge_description']['el-gr'] = "Περιγραφή";
$text['label-bridge_description']['es-cl'] = "Descripción";
$text['label-bridge_description']['es-mx'] = "Descripción";
$text['label-bridge_description']['fr-ca'] = "Description";
@@ -247,6 +332,7 @@ $text['description-bridge_description']['ar-eg'] = "أدخل الوصف.";
$text['description-bridge_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-bridge_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-bridge_description']['es-cl'] = "Introduce la descripción.";
$text['description-bridge_description']['es-mx'] = "Introduce la descripción.";
$text['description-bridge_description']['fr-ca'] = "Entrez la description";
@@ -265,4 +351,229 @@ $text['description-bridge_description']['zh-cn'] = "输入说明。";
$text['description-bridge_description']['ja-jp'] = "説明を入力します。";
$text['description-bridge_description']['ko-kr'] = "설명을 입력합니다.";
$text['label-bridge_profile']['en-us'] = "Profile";
$text['label-bridge_profile']['en-gb'] = "Profile";
$text['label-bridge_profile']['ar-eg'] = "موجز";
$text['label-bridge_profile']['de-at'] = "Profil";
$text['label-bridge_profile']['de-ch'] = "Profil";
$text['label-bridge_profile']['de-de'] = "Profil";
$text['label-bridge_profile']['el-gr'] = "Προφίλ";
$text['label-bridge_profile']['es-cl'] = "Perfil";
$text['label-bridge_profile']['es-mx'] = "Perfil";
$text['label-bridge_profile']['fr-ca'] = "Profile";
$text['label-bridge_profile']['fr-fr'] = "Profile";
$text['label-bridge_profile']['he-il'] = "פרופיל";
$text['label-bridge_profile']['it-it'] = "Profilo";
$text['label-bridge_profile']['nl-nl'] = "Profiel";
$text['label-bridge_profile']['pl-pl'] = "Profil";
$text['label-bridge_profile']['pt-br'] = "Perfil";
$text['label-bridge_profile']['pt-pt'] = "Perfil";
$text['label-bridge_profile']['ro-ro'] = "Profil";
$text['label-bridge_profile']['ru-ru'] = "Профиль";
$text['label-bridge_profile']['sv-se'] = "Profil";
$text['label-bridge_profile']['uk-ua'] = "Профіль";
$text['label-bridge_profile']['zh-cn'] = "轮廓";
$text['label-bridge_profile']['ja-jp'] = "プロフィール";
$text['label-bridge_profile']['ko-kr'] = "프로필";
$text['description-bridge_profile']['en-us'] = "Enter the profile here.";
$text['description-bridge_profile']['en-gb'] = "Enter the profile here.";
$text['description-bridge_profile']['ar-eg'] = "أدخل ملف التعريف هنا.ا";
$text['description-bridge_profile']['de-at'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['de-ch'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['de-de'] = "Definieren Sie die Einstellungen für dieses Profil.";
$text['description-bridge_profile']['el-gr'] = "Εισαγάγετε το προφίλ εδώ.";
$text['description-bridge_profile']['es-cl'] = "Ingrese el perfil aquí.";
$text['description-bridge_profile']['es-mx'] = "Ingrese el perfil aquí.";
$text['description-bridge_profile']['fr-ca'] = "Sélectionnez le profil à utiliser pour cette passerelle";
$text['description-bridge_profile']['fr-fr'] = "Sélectionnez le profil à utiliser pour cette passerelle";
$text['description-bridge_profile']['he-il'] = "היכנסו לפרופיל כאן.";
$text['description-bridge_profile']['it-it'] = "Inserire qui il profilo.";
$text['description-bridge_profile']['nl-nl'] = "Voer het profiel hier in.";
$text['description-bridge_profile']['pl-pl'] = "Zdefiniuj ustawienia tego profilu";
$text['description-bridge_profile']['pt-br'] = "Defina as configurações para este perfil";
$text['description-bridge_profile']['pt-pt'] = "Insira o perfil aqui.";
$text['description-bridge_profile']['ro-ro'] = "Introduceți profilul aici.";
$text['description-bridge_profile']['ru-ru'] = "Выберите профиль, используемый для этого шлюза.";
$text['description-bridge_profile']['sv-se'] = "Definiera inställningar för denna profil.";
$text['description-bridge_profile']['uk-ua'] = "Введіть профіль тут.";
$text['description-bridge_profile']['zh-cn'] = "在此处输入个人资料。";
$text['description-bridge_profile']['ja-jp'] = "ここにプロフィールを入力します。";
$text['description-bridge_profile']['ko-kr'] = "여기에 프로필을 입력하세요.";
$text['label-bridge_variables']['en-us'] = "Variables";
$text['label-bridge_variables']['en-gb'] = "Variables";
$text['label-bridge_variables']['ar-eg'] = "المتغيرات";
$text['label-bridge_variables']['de-at'] = "Variablen";
$text['label-bridge_variables']['de-ch'] = "Variablen";
$text['label-bridge_variables']['de-de'] = "Variablen";
$text['label-bridge_variables']['el-gr'] = "Μεταβλητές";
$text['label-bridge_variables']['es-cl'] = "variables";
$text['label-bridge_variables']['es-mx'] = "variables";
$text['label-bridge_variables']['fr-ca'] = "Variables";
$text['label-bridge_variables']['fr-fr'] = "Variables";
$text['label-bridge_variables']['he-il'] = "משתנים";
$text['label-bridge_variables']['it-it'] = "Variabili";
$text['label-bridge_variables']['nl-nl'] = "Variabelen";
$text['label-bridge_variables']['pl-pl'] = "Zmienne";
$text['label-bridge_variables']['pt-br'] = "Variáveis";
$text['label-bridge_variables']['pt-pt'] = "Variáveis";
$text['label-bridge_variables']['ro-ro'] = "Variabile";
$text['label-bridge_variables']['ru-ru'] = "Переменные";
$text['label-bridge_variables']['sv-se'] = "Variabler";
$text['label-bridge_variables']['uk-ua'] = "Змінні";
$text['label-bridge_variables']['zh-cn'] = "变量";
$text['label-bridge_variables']['ja-jp'] = "変数";
$text['label-bridge_variables']['ko-kr'] = "변수";
$text['description-bridge_variables']['en-us'] = "Set a value for the variable.";
$text['description-bridge_variables']['en-gb'] = "Set a value for the variable.";
$text['description-bridge_variables']['ar-eg'] = "قم بتعيين قيمة للمتغير.";
$text['description-bridge_variables']['de-at'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-ch'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-de'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['el-gr'] = "Ορίστε μια τιμή για τη μεταβλητή.";
$text['description-bridge_variables']['es-cl'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['es-mx'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['fr-fr'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['he-il'] = "הגדר ערך עבור המשתנה.";
$text['description-bridge_variables']['it-it'] = "Impostare un valore per la variabile.";
$text['description-bridge_variables']['nl-nl'] = "Stel een waarde in voor de variabele.";
$text['description-bridge_variables']['pl-pl'] = "Ustaw wartość zmiennej.";
$text['description-bridge_variables']['pt-br'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['pt-pt'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru variabilă.";
$text['description-bridge_variables']['ru-ru'] = "Установите значение для переменной.";
$text['description-bridge_variables']['sv-se'] = "Ställ in ett värde för variabeln.";
$text['description-bridge_variables']['uk-ua'] = "Установіть значення для змінної.";
$text['description-bridge_variables']['zh-cn'] = "为变量设置一个值。";
$text['description-bridge_variables']['ja-jp'] = "変数の値を設定します。";
$text['description-bridge_variables']['ko-kr'] = "변수의 값을 설정합니다.";
$text['label-bridge_gateways']['en-us'] = "Gateways";
$text['label-bridge_gateways']['en-gb'] = "Gateways";
$text['label-bridge_gateways']['ar-eg'] = "البوابات";
$text['label-bridge_gateways']['de-at'] = "Gateways";
$text['label-bridge_gateways']['de-ch'] = "Gateways";
$text['label-bridge_gateways']['de-de'] = "Gateways";
$text['label-bridge_gateways']['el-gr'] = "Πύλες";
$text['label-bridge_gateways']['es-cl'] = "Pasarelas";
$text['label-bridge_gateways']['es-mx'] = "Pasarelas";
$text['label-bridge_gateways']['fr-ca'] = "Passerelles";
$text['label-bridge_gateways']['fr-fr'] = "Passerelles";
$text['label-bridge_gateways']['he-il'] = "שערות";
$text['label-bridge_gateways']['it-it'] = "Gateways";
$text['label-bridge_gateways']['nl-nl'] = "Gateways";
$text['label-bridge_gateways']['pl-pl'] = "Bramy wyjściowe (gateways)";
$text['label-bridge_gateways']['pt-br'] = "Troncos";
$text['label-bridge_gateways']['pt-pt'] = "Gateways";
$text['label-bridge_gateways']['ro-ro'] = "portal";
$text['label-bridge_gateways']['ru-ru'] = "Шлюзы";
$text['label-bridge_gateways']['sv-se'] = "Gateways";
$text['label-bridge_gateways']['uk-ua'] = "Шлюзи";
$text['label-bridge_gateways']['zh-cn'] = "网关";
$text['label-bridge_gateways']['ja-jp'] = "ゲートウェイ";
$text['label-bridge_gateways']['ko-kr'] = "게이트웨이";
$text['description-bridge_gateways']['en-us'] = "Select the gateway.";
$text['description-bridge_gateways']['en-gb'] = "Select the gateway.";
$text['description-bridge_gateways']['ar-eg'] = "حدد البوابة.";
$text['description-bridge_gateways']['de-at'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['de-ch'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['de-de'] = "Wählen Sie das Gateway aus.";
$text['description-bridge_gateways']['el-gr'] = "Επιλέξτε την πύλη.";
$text['description-bridge_gateways']['es-cl'] = "Seleccione la puerta de enlace.";
$text['description-bridge_gateways']['es-mx'] = "Seleccione la puerta de enlace.";
$text['description-bridge_gateways']['fr-ca'] = "Sélectionnez la passerelle.";
$text['description-bridge_gateways']['fr-fr'] = "Sélectionnez la passerelle.";
$text['description-bridge_gateways']['he-il'] = "בחר את השער.";
$text['description-bridge_gateways']['it-it'] = "Seleziona il gateway.";
$text['description-bridge_gateways']['nl-nl'] = "Selecteer de gateway.";
$text['description-bridge_gateways']['pl-pl'] = "Wybierz bramę.";
$text['description-bridge_gateways']['pt-br'] = "Selecione o gateway.";
$text['description-bridge_gateways']['pt-pt'] = "Selecione o gateway.";
$text['description-bridge_gateways']['ro-ro'] = "Selectați poarta de acces.";
$text['description-bridge_gateways']['ru-ru'] = "Выберите шлюз.";
$text['description-bridge_gateways']['sv-se'] = "Välj gateway.";
$text['description-bridge_gateways']['uk-ua'] = "Виберіть шлюз.";
$text['description-bridge_gateways']['zh-cn'] = "选择网关。";
$text['description-bridge_gateways']['ja-jp'] = "ゲートウェイを選択します。";
$text['description-bridge_gateways']['ko-kr'] = "게이트웨이를 선택합니다.";
$text['description-bridge_variables']['en-us'] = "Set a value for the variable.";
$text['description-bridge_variables']['en-gb'] = "Set a value for the variable.";
$text['description-bridge_variables']['ar-eg'] = "قم بتعيين قيمة للمتغير.";
$text['description-bridge_variables']['de-at'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-ch'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['de-de'] = "Legen Sie einen Wert für die Variable fest.";
$text['description-bridge_variables']['el-gr'] = "Ορίστε μια τιμή για τη μεταβλητή.";
$text['description-bridge_variables']['es-cl'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['es-mx'] = "Establezca un valor para la variable.";
$text['description-bridge_variables']['fr-ca'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['fr-fr'] = "Définissez une valeur pour la variable.";
$text['description-bridge_variables']['he-il'] = "הגדר ערך עבור המשתנה.";
$text['description-bridge_variables']['it-it'] = "Impostare un valore per la variabile.";
$text['description-bridge_variables']['nl-nl'] = "Stel een waarde in voor de variabele.";
$text['description-bridge_variables']['pl-pl'] = "Ustaw wartość zmiennej.";
$text['description-bridge_variables']['pt-br'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['pt-pt'] = "Defina um valor para a variável.";
$text['description-bridge_variables']['ro-ro'] = "Setați o valoare pentru variabilă.";
$text['description-bridge_variables']['ru-ru'] = "Установите значение для переменной.";
$text['description-bridge_variables']['sv-se'] = "Ställ in ett värde för variabeln.";
$text['description-bridge_variables']['uk-ua'] = "Установіть значення для змінної.";
$text['description-bridge_variables']['zh-cn'] = "为变量设置一个值。";
$text['description-bridge_variables']['ja-jp'] = "変数の値を設定します。";
$text['description-bridge_variables']['ko-kr'] = "변수의 값을 설정합니다.";
$text['label-destination_number']['en-us'] = "Destination Number";
$text['label-destination_number']['en-gb'] = "Destination Number";
$text['label-destination_number']['ar-eg'] = "رقم الوجهة";
$text['label-destination_number']['de-at'] = "Zielnummer";
$text['label-destination_number']['de-ch'] = "Zielnummer";
$text['label-destination_number']['de-de'] = "Zielnummer";
$text['label-destination_number']['el-gr'] = "Αριθμός προορισμού";
$text['label-destination_number']['es-cl'] = "Número de destino";
$text['label-destination_number']['es-mx'] = "Número de destino";
$text['label-destination_number']['fr-ca'] = "Numéro du destinataire";
$text['label-destination_number']['fr-fr'] = "Numéro du destinataire";
$text['label-destination_number']['he-il'] = "מספר יעד";
$text['label-destination_number']['it-it'] = "Numero di destinazione";
$text['label-destination_number']['nl-nl'] = "Bestemmings nummer";
$text['label-destination_number']['pl-pl'] = "Numer docelowy";
$text['label-destination_number']['pt-br'] = "Número de destino";
$text['label-destination_number']['pt-pt'] = "Número de destino";
$text['label-destination_number']['ro-ro'] = "Numarul destinatiei";
$text['label-destination_number']['ru-ru'] = "Номер назначения";
$text['label-destination_number']['sv-se'] = "Destinationsnummer";
$text['label-destination_number']['uk-ua'] = "Номер призначення";
$text['label-destination_number']['zh-cn'] = "目的地号码";
$text['label-destination_number']['ja-jp'] = "宛先番号";
$text['label-destination_number']['ko-kr'] = "대상 번호";
$text['description-destination_number']['en-us'] = "Set the destination number for the action.";
$text['description-destination_number']['en-gb'] = "Set the destination number for the action.";
$text['description-destination_number']['ar-eg'] = "قم بتعيين رقم الوجهة للإجراء.";
$text['description-destination_number']['de-at'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['de-ch'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['de-de'] = "Legen Sie die Zielnummer für die Aktion fest.";
$text['description-destination_number']['el-gr'] = "Ρυθμίστε τον αριθμό προορισμού για τη δράση.";
$text['description-destination_number']['es-cl'] = "Establezca el número de destino de la acción.";
$text['description-destination_number']['es-mx'] = "Establezca el número de destino de la acción.";
$text['description-destination_number']['fr-ca'] = "Définissez le numéro de destination de l'action.";
$text['description-destination_number']['fr-fr'] = "Définissez le numéro de destination de l'action.";
$text['description-destination_number']['he-il'] = "הגדר את מספר היעד לפעולה.";
$text['description-destination_number']['it-it'] = "Imposta il numero di destinazione per l'azione.";
$text['description-destination_number']['nl-nl'] = "Stel het bestemmingsnummer voor de actie in.";
$text['description-destination_number']['pl-pl'] = "Ustaw numer docelowy akcji.";
$text['description-destination_number']['pt-br'] = "Defina o número de destino para a ação.";
$text['description-destination_number']['pt-pt'] = "Defina o número de destino para a ação.";
$text['description-destination_number']['ro-ro'] = "Setați numărul de destinație pentru acțiune.";
$text['description-destination_number']['ru-ru'] = "Установите номер назначения для действия.";
$text['description-destination_number']['sv-se'] = "Ställ in destinationsnumret för åtgärden.";
$text['description-destination_number']['uk-ua'] = "Встановіть номер призначення для дії.";
$text['description-destination_number']['zh-cn'] = "设置操作的目标号码。";
$text['description-destination_number']['ja-jp'] = "アクションの宛先番号を設定します。";
$text['description-destination_number']['ko-kr'] = "작업의 대상 번호를 설정합니다.";
?>
+359 -12
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2018 - 2019
Portions created by the Initial Developer are Copyright (C) 2018 - 2023
the Initial Developer. All Rights Reserved.
*/
@@ -54,8 +54,13 @@
//get http post variables and set them to php variables
if (!empty($_POST)) {
$bridge_uuid = $_POST["bridge_uuid"] ?? null;
$bridge_uuid = $_POST["bridge_uuid"];
$bridge_name = $_POST["bridge_name"];
$bridge_action = $_POST["bridge_action"];
$bridge_profile = $_POST["bridge_profile"];
$bridge_variables = $_POST["bridge_variables"];
$bridge_gateways = $_POST["bridge_gateways"];
$destination_number = $_POST["destination_number"];
$bridge_destination = $_POST["bridge_destination"];
$bridge_enabled = $_POST["bridge_enabled"] ?? 'false';
$bridge_description = $_POST["bridge_description"];
@@ -95,7 +100,7 @@
//check for all required data
$msg = '';
if (empty($bridge_name)) { $msg .= $text['message-required']." ".$text['label-bridge_name']."<br>\n"; }
if (empty($bridge_destination)) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
//if (empty($bridge_destination)) { $msg .= $text['message-required']." ".$text['label-bridge_destination']."<br>\n"; }
if (empty($bridge_enabled)) { $msg .= $text['message-required']." ".$text['label-bridge_enabled']."<br>\n"; }
if (!empty($msg) && empty($_POST["persistformvar"])) {
require_once "resources/header.php";
@@ -110,11 +115,49 @@
return;
}
//add the bridge_uuid
//add the bridge_uuid
if (empty($bridge_uuid)) {
$bridge_uuid = uuid();
}
//build the bridge statement for action user
if ($bridge_action == 'user' || $bridge_action == 'loopback') {
$bridge_destination = $bridge_action.'/'.$destination_number;
}
//build the bridge statement for gateway, or profiles - build the bridge statement
if ($bridge_action == 'gateway' || $bridge_action == 'profile') {
//create the main bridge statement
$bridge_base = '';
if (!empty($bridge_gateways)) {
foreach($bridge_gateways as $gateway) {
if (!empty($gateway)) {
$gateway_array = explode(':', $gateway);
$bridge_base .= ',sofia/gateway/'.$gateway_array[0].'/'.$destination_number;
}
}
if (!empty($bridge_base)) {
$bridge_destination = trim($bridge_base, ',');
}
}
if ($bridge_action == 'profile' && empty($bridge_destination)) {
$bridge_destination = 'sofia/'.$bridge_profile.'/'.$destination_number;
}
//add the variables back into the bridge_destination value
if (!empty($bridge_variables)) {
$variables = '';
foreach($bridge_variables as $key => $value) {
if (!empty($value)) {
$variables .= ','.trim($key).'='.trim($value);
}
}
if (!empty($variables)) {
$bridge_destination = '{'.trim($variables, ',').'}'.$bridge_destination;
}
}
}
//prepare the array
$array['bridges'][0]['bridge_uuid'] = $bridge_uuid;
$array['bridges'][0]['domain_uuid'] = $_SESSION["domain_uuid"];
@@ -165,6 +208,155 @@
unset($sql, $parameters, $row);
}
//build the bridge_actions array from the session actions
$i = 0;
foreach($_SESSION['bridge']['action'] as $variable) {
$bridge_actions[$i]['action'] = $variable;
$bridge_actions[$i]['label'] = ucwords($variable);
$i++;
}
//initialize the bridge_variables array from session bridge variables
$session_variables = []; $i = 0;
if (!empty($_SESSION['bridge']['variable'])) {
foreach($_SESSION['bridge']['variable'] as $variable) {
if (!empty($variable)) {
$variable = explode("=", $variable);
$session_variables[$i]['name'] = $variable[0];
$session_variables[$i]['value'] = $variable[1] ?? '';
$session_variables[$i]['label'] = ucwords(str_replace('_', ' ', $variable[0]));
$session_variables[$i]['label'] = str_replace('Effective Caller Id', 'Caller ID', $session_variables[$i]['label']);
$i++;
}
}
}
//get the bridge variables from the database bridge_destination value
$database_variables = []; $x = 0;
if (!empty($bridge_destination)) {
//get the variables from inside the { and } brackets
preg_match('/^\{([^}]+)\}/', $bridge_destination, $matches);
if (!empty($matches) && is_array($matches) && @sizeof($matches) != 0) {
//create a variables array from the comma delimitted string
$variables = explode(",", $matches[1]);
//strip the variables from the $bridge_destination variable
$bridge_destination = str_replace("{$matches[0]}", '', $bridge_destination);
}
//build a bridge variables data set
$x = 0;
if (!empty($variables) && is_array($variables)) {
foreach($variables as $variable) {
$pairs = explode("=", $variable);
$database_variables[$x]['name'] = $pairs[0];
$database_variables[$x]['value'] = $pairs[1];
$database_variables[$x]['label'] = ucwords(str_replace('_', ' ', $pairs[0]));
$database_variables[$x]['label'] = str_replace('Effective Caller Id', 'Caller ID', $database_variables[$x]['label']);
$x++;
}
}
}
//get the bridge_action from the bridge_destination
if (!empty($bridge_destination)) {
if (substr($bridge_destination, 0, 1) == '{') {
$bridge_parts = explode('}', $bridge_destination);
//get the variables from inside the { and } brackets
preg_match('/^\{([^}]+)\}/', $bridge_destination, $matches);
//strip the variables from the $bridge_destination variable
$bridge_destination = str_replace("{$matches[0]}", '', $bridge_destination);
}
$bridge_array = explode("/", $bridge_destination);
if ($bridge_array[0] == 'sofia') {
if ($bridge_array[1] == 'gateway') {
$bridge_action = 'gateway';
}
else {
$bridge_action = 'profile';
$bridge_profile = $bridge_array[1];
$destination_number = $bridge_array[2];
}
}
elseif ($bridge_array[0] == 'user') {
$bridge_action = 'user';
$destination_number = $bridge_array[1];
}
elseif ($bridge_array[0] == 'loopback') {
$bridge_action = 'loopback';
$destination_number = $bridge_array[1];
}
}
//merge the session and database bridge arrays together
$bridge_variables = $session_variables;
foreach($database_variables as $row) {
$found = false;
$i = 0;
foreach($bridge_variables as $field) {
if ($row['name'] == $field['name']) {
//matching row found
$found = true;
//override session value with the value from the database
if (!empty($row['value'])) {
$bridge_variables[$i]['value'] = $row['value'];
}
}
$i++;
}
if (!$found) {
if (!empty($row['name'])) {
$bridge_variables[] = $row;
}
}
}
//get the gateways
$actions = explode(',', $bridge_destination);
foreach ($actions as $action) {
$action_array = explode('/',$action);
if (!empty($action_array) && is_array($action_array) && !empty($action_array[1]) && $action_array[1] == 'gateway') {
$bridge_gateways[] = $action_array[2];
$destination_number = $action_array[3];
}
}
//get the gateways
$sql = "select * from v_gateways ";
$sql .= "where enabled = 'true' ";
if (permission_exists('outbound_route_any_gateway')) {
$sql .= "order by domain_uuid = :domain_uuid DESC, gateway ";
}
else {
$sql .= "and domain_uuid = :domain_uuid ";
}
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$gateways = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get the domains
$sql = "select * from v_domains ";
$sql .= "where domain_enabled = 'true' ";
$database = new database;
$domains = $database->select($sql, null, 'all');
unset($sql);
//get the sip profiles
$sql = "select sip_profile_name ";
$sql .= "from v_sip_profiles ";
$sql .= "where sip_profile_enabled = 'true' ";
$sql .= "order by sip_profile_name asc ";
$database = new database;
$sip_profiles = $database->select($sql, null, 'all');
unset($sql);
//set the defaults
if (empty($bridge_enabled)) { $bridge_enabled = 'true'; }
@@ -176,6 +368,39 @@
$document['title'] = $text['title-bridge'];
require_once "resources/header.php";
//show or hide form elements based on the bridge action
echo "<script type='text/javascript'>\n";
echo " function action_control(action) {\n";
echo " if (action == 'gateway') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = ''; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = ''; }\n";
echo " }\n";
echo " else if (action == 'user') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = 'none'; }\n";
echo " }\n";
echo " else if (action == 'profile') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = ''; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = ''; }\n";
echo " }\n";
echo " else if (action == 'loopback') {\n";
echo " if (document.getElementById('tr_bridge_gateways')) { document.getElementById('tr_bridge_gateways').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_profile')) { document.getElementById('tr_bridge_profile').style.display = 'none'; }\n";
echo " if (document.getElementById('tr_bridge_variables')) { document.getElementById('tr_bridge_variables').style.display = 'none'; }\n";
echo " }\n";
echo " ";
echo " }\n";
echo "\n";
if (!empty($bridge_action)) {
echo " window.onload = function() {\n";
echo " action_control('".$bridge_action."');\n";
echo " };\n";
}
echo "</script>\n";
//show the content
echo "<form name='frm' id='frm' method='post'>\n";
@@ -209,16 +434,138 @@
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_destination']."\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_action']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <input class='formfld' type='text' name='bridge_destination' maxlength='255' value='".escape($bridge_destination)."'>\n";
echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
echo " <select class='formfld' id='bridge_action' name='bridge_action' onchange='action_control(this.options[this.selectedIndex].value);'>\n";
echo " <option value=''></option>\n";
$i = 0;
foreach($bridge_actions as $row) {
echo " <option value='".$row['action']."' ".(!empty($bridge_action) && $bridge_action == $row['action'] ? "selected='selected'" : null).">".$row['label']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-bridge_destination']."\n";
echo $text['description-bridge_action']."\n";
echo "</td>\n";
echo "</tr>\n";
if (!empty($bridge_variables)) {
echo "<tr id='tr_bridge_variables'>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_variables']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$i = 0;
foreach($bridge_variables as $row) {
if ($i > 0) { echo "<br >\n"; }
echo " <input class='formfld' type='text' name='bridge_variables[".$row['name']."]' placeholder='".$row['label']."' maxlength='255' value='".escape($row['value'])."'>\n";
$i++;
}
echo "<br />\n";
echo $text['description-bridge_variables']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr id='tr_bridge_profile'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-bridge_profile']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='bridge_profile'>\n";
echo " <option value=''></option>\n";
foreach ($sip_profiles as $row) {
if (!empty($bridge_profile) && $bridge_profile == $row["sip_profile_name"]) {
echo " <option value='".$row['sip_profile_name']."' selected='selected'>".escape($row["sip_profile_name"])."</option>\n";
}
else {
echo " <option value='".escape($row["sip_profile_name"])."'>".escape($row["sip_profile_name"])."</option>\n";
}
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-bridge_profile']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr id='tr_bridge_gateways'>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_gateways']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
for ($x = 0; $x <= 2; $x++) {
if ($x > 0) { echo "<br />\n"; }
echo "<select name='bridge_gateways[]' id='gateway' class='formfld' ".($onchange ?? '').">\n";
echo "<option value=''></option>\n";
echo "<optgroup label='".$text['label-bridge_gateways']."'>\n";
$previous_domain_uuid = '';
foreach($gateways as $row) {
if (permission_exists('outbound_route_any_gateway')) {
if ($previous_domain_uuid != $row['domain_uuid']) {
$domain_name = '';
foreach($domains as $field) {
if ($row['domain_uuid'] == $field['domain_uuid']) {
$domain_name = $field['domain_name'];
break;
}
}
if (empty($domain_name)) { $domain_name = $text['label-global']; }
echo "</optgroup>";
echo "<optgroup label='&nbsp; &nbsp;".$domain_name."'>\n";
}
if (!empty($bridge_gateways) && is_array($bridge_gateways) && $row['gateway_uuid'] == $bridge_gateways[$x]) {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\" selected=\"selected\">".escape($row['gateway'])."</option>\n"; //." db:".$row['gateway_uuid']." bg:".$bridge_gateways[$x]
}
else {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\">".escape($row['gateway'])."</option>\n";
}
}
else {
if (!empty($bridge_gateways) && is_array($bridge_gateways) && $row['gateway_uuid'] == $bridge_gateways[$x]) {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\" $onchange selected=\"selected\">".escape($row['gateway'])."</option>\n";
}
else {
echo "<option value=\"".escape($row['gateway_uuid']).":".escape($row['gateway'])."\">".escape($row['gateway'])."</option>\n";
}
}
$previous_domain_uuid = $row['domain_uuid'];
}
//echo " </optgroup>\n";
//echo " <optgroup label='".$text['label-add-options']."Options'>\n";
//echo " <option value=\"loopback\">loopback</option>\n";
//echo " <option value=\"freetdm\">freetdm</option>\n";
//echo " <option value=\"xmpp\">xmpp</option>\n";
//echo " </optgroup>\n";
echo "</select>\n";
}
echo "<br />\n";
echo $text['description-bridge_gateways']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-destination_number']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <textarea class='formfld' name='destination_number'>".escape($destination_number ?? '')."</textarea>\n";
echo "<br />\n";
echo $text['description-destination_number']."\n";
echo "</td>\n";
echo "</tr>\n";
//echo "<tr>\n";
//echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
//echo " ".$text['label-bridge_destination']."\n";
//echo "</td>\n";
//echo "<td class='vtable' style='position: relative;' align='left'>\n";
//echo " <textarea class='formfld' name='bridge_destination'>".escape($bridge_destination)."</textarea>\n";
//echo "<br />\n";
//echo $text['description-bridge_destination']."\n";
//echo "</td>\n";
//echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-bridge_enabled']."\n";
@@ -252,10 +599,10 @@
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
echo "</table>\n";
echo "<br /><br />\n";
if ($action == "update") {
if (!empty($bridge_uuid)) {
echo "<input type='hidden' name='bridge_uuid' value='".escape($bridge_uuid)."'>\n";
}
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
+436
View File
@@ -0,0 +1,436 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2019-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";
//check permissions
if (permission_exists('bridge_import')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduct the functionality but requirs PHP 5.1.0 or higher
if (!function_exists('str_getcsv')) {
function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
$fp = fopen("php://memory", 'r+');
fputs($fp, $input);
rewind($fp);
$data = fgetcsv($fp, null, $delimiter, $enclosure); // $escape only got added in 5.3.0
fclose($fp);
return $data;
}
}
//set the max php execution time
ini_set('max_execution_time', 7200);
//get the http get values and set them as php variables
$action = $_POST["action"] ?? '';
$from_row = $_POST["from_row"] ?? '';
$delimiter = $_POST["data_delimiter"] ?? '';
$enclosure = $_POST["data_enclosure"] ?? '';
//save the data to the csv file
if (isset($_POST['data'])) {
$file = $_SESSION['server']['temp']['dir']."/bridges-".$_SESSION['domain_name'].".csv";
file_put_contents($file, $_POST['data']);
$_SESSION['file'] = $file;
}
//copy the csv file
if (!empty($_FILES['ulfile']['tmp_name']) && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('bridge_import')) {
if ($_POST['type'] == 'csv') {
move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']);
$save_msg = "Uploaded file to ".$_SESSION['server']['temp']['dir']."/". htmlentities($_FILES['ulfile']['name']);
//system('chmod -R 744 '.$_SESSION['server']['temp']['dir'].'*');
unset($_POST['txtCommand']);
$file = $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name'];
$_SESSION['file'] = $file;
}
}
//get the schema
if (!empty($delimiter)) {
//get the first line
$line = fgets(fopen($_SESSION['file'], 'r'));
$line_fields = explode($delimiter, $line);
//get the schema
$x = 0;
include ("app/bridges/app_config.php");
$i = 0;
foreach ($apps[0]['db'] as $table) {
//get the table name and parent name
if (is_array($table["table"]['name'])) {
$table_name = $table["table"]['name']['text'];
}
else {
$table_name = $table["table"]['name'];
}
$parent_name = $table["table"]['parent'];
//remove the v_ table prefix
if (substr($table_name, 0, 2) == 'v_') {
$table_name = substr($table_name, 2);
}
if (substr($parent_name, 0, 2) == 'v_') {
$parent_name = substr($parent_name, 2);
}
//filter for specific tables and build the schema array
if ($table_name == "bridges") {
$schema[$i]['table'] = $table_name;
$schema[$i]['parent'] = $parent_name;
foreach($table['fields'] as $row) {
$row['deprecated'] = $row['deprecated'] ?? '';
if ($row['deprecated'] !== 'true') {
if (is_array($row['name'])) {
$field_name = $row['name']['text'];
}
else {
$field_name = $row['name'];
}
$schema[$i]['fields'][] = $field_name;
}
}
$i++;
}
}
}
//match the column names to the field names
if (!empty($delimiter) && file_exists($_SESSION['file']) && $action != 'import') {
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include header
$document['title'] = $text['label-bridge_import'];
require_once "resources/header.php";
//form to match the fields to the column names
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['label-bridge_import']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'bridges.php']);
echo button::create(['type'=>'submit','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'id'=>'btn_save']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-import']."\n";
echo "<br /><br />\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
//loop through user columns
$x = 0;
foreach ($line_fields as $line_field) {
$line_field = preg_replace('#[^a-zA-Z0-9_]#', '', $line_field);
echo "<tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
//echo " ".$text['label-zzz']."\n";
echo $line_field;
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select class='formfld' style='' name='fields[$x]'>\n";
echo " <option value=''></option>\n";
foreach($schema as $row) {
echo " <optgroup label='".$row['table']."'>\n";
foreach($row['fields'] as $field) {
$selected = '';
if ($field == $line_field) {
$selected = "selected='selected'";
}
if ($field !== 'domain_uuid') {
echo " <option value='".$row['table'].".".$field."' ".$selected.">".$field."</option>\n";
}
}
echo " </optgroup>\n";
}
echo " </select>\n";
//echo "<br />\n";
//echo $text['description-zzz']."\n";
echo " </td>\n";
echo "</tr>\n";
$x++;
}
echo "</table>\n";
echo "<br /><br />\n";
echo "<input name='action' type='hidden' value='import'>\n";
echo "<input name='from_row' type='hidden' value='$from_row'>\n";
echo "<input name='data_delimiter' type='hidden' value='$delimiter'>\n";
echo "<input name='data_enclosure' type='hidden' value='$enclosure'>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
require_once "resources/footer.php";
//normalize the column names
//$line = strtolower($line);
//$line = str_replace("-", "_", $line);
//$line = str_replace($delimiter."title".$delimiter, $delimiter."contact_title".$delimiter, $line);
//$line = str_replace("firstname", "name_given", $line);
//$line = str_replace("lastname", "name_family", $line);
//$line = str_replace("company", "organization", $line);
//$line = str_replace("company", "contact_email", $line);
//end the script
exit;
}
//get the parent table
function get_parent($schema,$table_name) {
foreach ($schema as $row) {
if ($row['table'] == $table_name) {
return $row['parent'];
}
}
}
//upload the csv
if (file_exists($_SESSION['file'] ?? '') && $action == 'import') {
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: extension_imports.php');
exit;
}
//user selected fields
$fields = $_POST['fields'];
//set the domain_uuid
$domain_uuid = $_SESSION['domain_uuid'];
//get the contents of the csv file and convert them into an array
$handle = @fopen($_SESSION['file'], "r");
if ($handle) {
//set the starting identifiers
$row_id = 0;
$row_number = 1;
//loop through the array
while (($line = fgets($handle, 4096)) !== false) {
if ($from_row <= $row_number) {
//format the data
$y = 0;
foreach ($fields as $key => $value) {
//get the line
$result = str_getcsv($line, $delimiter, $enclosure);
//get the table and field name
$field_array = explode(".",$value);
$table_name = $field_array[0];
$field_name = $field_array[1];
//echo "value: $value<br />\n";
//echo "table_name: $table_name<br />\n";
//echo "field_name: $field_name<br />\n";
//get the parent table name
$parent = get_parent($schema, $table_name);
//remove formatting from the phone number
if ($field_name == "phone_number") {
$result[$key] = preg_replace('{\D}', '', $result[$key]);
}
//set the voicemail_local_after_email, voicemail_tutorial, and voicemail_enabled to lower case
if ($field_name == 'voicemail_local_after_email' || $field_name == 'voicemail_tutorial' || $field_name == 'voicemail_enabled') {
$result[$key] = strtolower($result[$key]);
}
//build the data array
if (!empty($table_name)) {
if (empty($parent)) {
$array[$table_name][$row_id]['domain_uuid'] = $domain_uuid;
$array[$table_name][$row_id][$field_name] = $result[$key];
}
else {
$array[$parent][$row_id][$table_name][$y]['domain_uuid'] = $domain_uuid;
$array[$parent][$row_id][$table_name][$y][$field_name] = $result[$key];
}
}
}
//process a chunk of the array
if ($row_id === 1000) {
//save to the data
$database = new database;
$database->app_name = 'bridges';
$database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044';
$database->save($array);
//clear the array
unset($array);
//set the row id back to 0
$row_id = 0;
}
} //if ($from_row <= $row_number)
$row_number++;
$row_id++;
} //end while
fclose($handle);
//save to the data
if (!empty($array) && is_array($array)) {
$database = new database;
$database->app_name = 'bridges';
$database->app_uuid = 'b523c2d2-64cd-46f1-9520-ca4b4098e044';
$database->save($array);
unset($array);
}
//send the redirect header
header("Location: bridges.php");
exit;
}
}
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['label-bridge_import'];
require_once "resources/header.php";
//show content
echo "<form name='frmUpload' method='post' enctype='multipart/form-data'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['label-bridge_import']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'bridges.php']);
echo button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>$_SESSION['theme']['button_icon_upload'],'id'=>'btn_save']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-import']."\n";
echo "<br /><br />\n";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_data']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <textarea name='data' id='data' class='formfld' style='width: 100%; min-height: 150px;' wrap='off'></textarea>\n";
echo "<br />\n";
echo $text['description-import_data']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-from_row']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='from_row'>\n";
$i=2;
while($i<=99) {
$selected = ($i == $from_row) ? "selected" : null;
echo " <option value='$i' ".$selected.">$i</option>\n";
$i++;
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-from_row']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_delimiter']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' style='width:40px;' name='data_delimiter'>\n";
echo " <option value=','>,</option>\n";
echo " <option value='|'>|</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-import_delimiter']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_enclosure']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' style='width:40px;' name='data_enclosure'>\n";
echo " <option value='\"'>\"</option>\n";
echo " <option value=''></option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-import_enclosure']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-import_file_upload']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input name='ulfile' type='file' class='formfld fileinput' id='ulfile'>\n";
echo "<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "<input name='type' type='hidden' value='csv'>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>";
//include the footer
require_once "resources/footer.php";
?>
+3
View File
@@ -145,6 +145,9 @@
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='actions'>\n";
if (permission_exists('bridge_import')) {
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'style'=>'margin-right: 15px;','link'=>'bridge_imports.php']);
}
if (permission_exists('bridge_add')) {
echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','link'=>'bridge_edit.php']);
}
+3
View File
@@ -83,6 +83,9 @@
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_block_domain";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "view_call_block";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+3 -1
View File
@@ -31,7 +31,8 @@ if ($domains_processed == 1) {
$database->execute("DROP VIEW view_call_block;", null);
$sql = "CREATE VIEW view_call_block AS ( \n";
$sql .= " select c.domain_uuid, call_block_uuid, c.call_block_direction, c.extension_uuid, c.call_block_name, c.call_block_country_code, \n";
$sql .= " c.call_block_number, e.extension, e.number_alias, c.call_block_count, c.call_block_app, c.call_block_data, c.date_added, c.call_block_enabled, c.call_block_description \n";
$sql .= " c.call_block_number, e.extension, e.number_alias, c.call_block_count, c.call_block_app, c.call_block_data, c.date_added, \n";
$sql .= " c.call_block_enabled, c.call_block_description, c.insert_date, c.insert_user, c.update_date, c.update_user \n";
$sql .= " from v_call_block as c \n";
$sql .= " left join v_extensions as e \n";
$sql .= " on c.extension_uuid = e.extension_uuid \n";
@@ -49,3 +50,4 @@ if ($domains_processed == 1) {
}
?>
+1 -1
View File
@@ -1059,7 +1059,7 @@ $text['description-action']['pt-br'] = "Escolha uma ação para chamadas reailza
$text['description-action']['pt-pt'] = "Escolha uma acção para chamadas com origem neste número.";
$text['description-action']['ro-ro'] = "Setați o acțiune pentru apelurile de la acest număr.";
$text['description-action']['ru-ru'] = "Установите действие для вызовов с данного номера.";
$text['description-action']['sv-se'] = "Välj en aktion för samtal från detta nummer.";
$text['description-action']['sv-se'] = "Välj en åtgärd för samtal från detta nummer.";
$text['description-action']['uk-ua'] = "Встановіть дію для дзвінків з цього номера.";
$text['description-action']['zh-cn'] = "为来自此号码的呼叫设置一个操作。";
$text['description-action']['ja-jp'] = "この番号からの通話に対するアクションを設定します。";
+65 -9
View File
@@ -23,7 +23,7 @@
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
The original Call Block was written by Gerrit Visser <gerrit308@gmail.com>
The original Call Block was written by Gerrit Visser <gerrit308@gmail.com>
All of it has been rewritten over years.
*/
@@ -91,6 +91,14 @@
$search = strtolower($_GET["search"]);
}
//set the time zone
if (isset($_SESSION['domain']['time_zone']['name'])) {
$time_zone = $_SESSION['domain']['time_zone']['name'];
}
else {
$time_zone = date_default_timezone_get();
}
//prepare to page the results
$sql = "select count(*) from view_call_block ";
$sql .= "where true ";
@@ -99,7 +107,12 @@
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
else {
$sql .= "and (domain_uuid = :domain_uuid) ";
$sql .= "and ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension'])) {
@@ -141,14 +154,31 @@
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from view_call_block ";
$sql = "select domain_uuid, call_block_uuid, call_block_direction, extension_uuid, call_block_name, ";
$sql .= " call_block_country_code, call_block_number, extension, number_alias, call_block_count, ";
$sql .= " call_block_app, call_block_data, ";
$sql .= " to_char(timezone(:time_zone, insert_date), 'DD Mon YYYY') as date_formatted, \n";
if (date(!empty($_SESSION['domain']['time_format']['text']) == '12h')) {
$sql .= " to_char(timezone(:time_zone, insert_date), 'HH12:MI:SS am') as time_formatted, \n";
}
else {
$sql .= " to_char(timezone(:time_zone, insert_date), 'HH24:MI:SS am') as time_formatted, \n";
}
$sql .= " call_block_enabled, call_block_description, insert_date, insert_user, update_date, update_user ";
$sql .= "from view_call_block ";
$sql .= "where true ";
$parameters['time_zone'] = $time_zone;
if ($show == "all" && permission_exists('call_block_all')) {
//$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
//$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
else {
$sql .= "and (domain_uuid = :domain_uuid) ";
$sql .= "and ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (!permission_exists('call_block_all') && !empty($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) {
@@ -173,12 +203,20 @@
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$sql .= order_by($order_by, $order, ['call_block_country_code','call_block_number']);
$sql .= order_by($order_by, $order, ['domain_uuid','call_block_country_code','call_block_number']);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$result = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//determine if any global
$global_call_blocks = false;
if (permission_exists('call_block_domain') && !empty($result) && is_array($result) && @sizeof($result) != 0) {
foreach ($result as $row) {
if (!is_uuid($row['domain_uuid'])) { $global_call_blocks = true; break; }
}
}
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
@@ -250,6 +288,9 @@
if ($show == 'all' && permission_exists('domain_all')) {
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
}
else if (permission_exists('call_block_domain') && $global_call_blocks) {
echo th_order_by('domain_uuid', $text['label-domain'], $order_by, $order, null, "style='width: 1%;' class='center'");
}
echo th_order_by('call_block_direction', $text['label-direction'], $order_by, $order, null, "style='width: 1%;' class='center'");
echo th_order_by('extension', $text['label-extension'], $order_by, $order, null, "class='center'");
echo th_order_by('call_block_name', $text['label-name'], $order_by, $order);
@@ -258,7 +299,7 @@
echo th_order_by('call_block_count', $text['label-count'], $order_by, $order, '', "class='center hide-sm-dn'");
echo th_order_by('call_block_action', $text['label-action'], $order_by, $order);
echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('date_added', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
echo th_order_by('insert_date', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
echo "<th class='hide-md-dn pct-20'>".$text['label-description']."</th>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
@@ -267,7 +308,7 @@
if (!empty($result)) {
$x = 0;
foreach($result as $row) {
foreach ($result as $row) {
if (permission_exists('call_block_edit')) {
$list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']);
}
@@ -279,7 +320,22 @@
echo " </td>\n";
}
if (!empty($show) && $show == 'all' && permission_exists('domain_all')) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
if (!empty($row['domain_uuid']) && is_uuid($row['domain_uuid'])) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
}
else {
echo " <td>".$text['label-global']."</td>\n";
}
}
else if ($global_call_blocks) {
if (permission_exists('call_block_domain') && !is_uuid($row['domain_uuid'])) {
echo " <td>".$text['label-global'];
}
else {
echo " <td class='overflow'>";
echo escape($_SESSION['domains'][$row['domain_uuid']]['domain_name']);
}
echo "</td>\n";
}
echo " <td class='center'>";
switch ($row['call_block_direction']) {
@@ -323,7 +379,7 @@
echo $text['label-'.$row['call_block_enabled']];
}
echo " </td>\n";
echo " <td class='no-wrap'>".date('j M Y', $row['date_added'])." <span class='hide-sm-dn'>".date((!empty($_SESSION['domain']['time_format']['text']) == '12h' ? 'h:i:s a' : 'H:i:s'), $row['date_added'])."</span></td>\n";
echo " <td class='no-wrap'>".$row['date_formatted']." <span class='hide-sm-dn'>".$row['time_formatted']."</span></td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['call_block_description'])."</td>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
+75 -18
View File
@@ -62,6 +62,7 @@
//get http post variables and set them to php variables
if (!empty($_POST)) {
//get the variables from the http post
$domain_uuid = permission_exists('call_block_domain') ? $_POST["domain_uuid"] : $_SESSION['domain_uuid'];
$call_block_direction = $_POST["call_block_direction"];
$extension_uuid = $_POST["extension_uuid"];
$call_block_name = $_POST["call_block_name"] ?? null;
@@ -146,10 +147,14 @@
//ensure call block is enabled in the dialplan
if ($action == "add" || $action == "update") {
$sql = "select dialplan_uuid from v_dialplans where true ";
$sql .= "and domain_uuid = :domain_uuid ";
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$sql .= "and domain_uuid = :domain_uuid ";
}
$sql .= "and app_uuid = 'b1b31930-d0ee-4395-a891-04df94599f1f' ";
$sql .= "and dialplan_enabled <> 'true' ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$parameters['domain_uuid'] = $domain_uuid;
}
$database = new database;
$rows = $database->select($sql, $parameters);
@@ -170,15 +175,15 @@
}
}
//if user doesn't have call block all then use the assigned extension_uuid
if (!permission_exists('call_block_all')) {
//if user doesn't have call block extension then use the assigned extension_uuid
if (!permission_exists('call_block_extension')) {
$extension_uuid = $_SESSION['user']['extension'][0]['extension_uuid'];
}
//save the data to the database
if ($action == "add") {
$array['call_block'][0]['call_block_uuid'] = uuid();
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][0]['domain_uuid'] = $domain_uuid;
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
@@ -205,12 +210,20 @@
return;
}
if ($action == "update") {
$sql = "select c.call_block_country_code, c.call_block_number, d.domain_name ";
$sql .= "from v_call_block as c ";
$sql .= "join v_domains as d on c.domain_uuid = d.domain_uuid ";
$sql .= "where c.domain_uuid = :domain_uuid ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
if (!empty($domain_uuid) && is_uuid($domain_uuid)) {
$sql = "select c.call_block_country_code, c.call_block_number, d.domain_name ";
$sql .= "from v_call_block as c ";
$sql .= "join v_domains as d on c.domain_uuid = d.domain_uuid ";
$sql .= "where c.domain_uuid = :domain_uuid ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
else {
$sql = "select c.call_block_country_code, c.call_block_number, domain_name as 'global' ";
$sql .= "from v_call_block as c ";
$sql .= "where c.domain_uuid is null ";
$sql .= "and c.call_block_uuid = :call_block_uuid ";
}
$parameters['call_block_uuid'] = $call_block_uuid;
$database = new database;
$result = $database->select($sql, $parameters);
@@ -225,7 +238,7 @@
unset($sql, $parameters);
$array['call_block'][0]['call_block_uuid'] = $call_block_uuid;
$array['call_block'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['call_block'][0]['domain_uuid'] = $domain_uuid;
$array['call_block'][0]['call_block_direction'] = $call_block_direction;
if (!empty($extension_uuid) && is_uuid($extension_uuid)) {
$array['call_block'][0]['extension_uuid'] = $extension_uuid;
@@ -257,13 +270,19 @@
if (!empty($_GET) && empty($_POST["persistformvar"])) {
$call_block_uuid = $_GET["id"];
$sql = "select * from v_call_block ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and call_block_uuid = :call_block_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['call_block_uuid'] = $call_block_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row)) {
$domain_uuid = $row["domain_uuid"];
$call_block_direction = $row["call_block_direction"];
$extension_uuid = $row["extension_uuid"];
$call_block_name = $row["call_block_name"];
@@ -283,7 +302,12 @@
//get the extensions
if (permission_exists('call_block_all') || permission_exists('call_block_extension')) {
$sql = "select extension_uuid, extension, number_alias, user_context, description from v_extensions ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and enabled = 'true' ";
$sql .= "order by extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
@@ -294,7 +318,12 @@
//get the ivr's
if (permission_exists('call_block_all') || permission_exists('call_block_ivr')) {
$sql = "select ivr_menu_uuid,ivr_menu_name, ivr_menu_extension, ivr_menu_description from v_ivr_menus ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
// $sql .= "and enabled = 'true' ";
$sql .= "order by ivr_menu_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
@@ -305,7 +334,12 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ivr'))
//get the ring groups
if (permission_exists('call_block_all') || permission_exists('call_block_ring_group')) {
$sql = "select ring_group_uuid,ring_group_name, ring_group_extension, ring_group_description from v_ring_groups ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
// $sql .= "and ring_group_enabled = 'true' ";
$sql .= "order by ring_group_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
@@ -316,7 +350,12 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
//get the voicemails
$sql = "select voicemail_uuid, voicemail_id, voicemail_description ";
$sql .= "from v_voicemails ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and voicemail_enabled = 'true' ";
$sql .= "order by voicemail_id asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
@@ -383,7 +422,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('call_block_all')) {
if (permission_exists('call_block_extension')) {
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-extension']."\n";
@@ -507,6 +546,24 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('call_block_domain')) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-domain']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='domain_uuid'>\n";
echo " <option value=''>".$text['label-global']."</option>\n";
foreach ($_SESSION['domains'] as $row) {
echo " <option value='".escape($row['domain_uuid'])."' ".($row['domain_uuid'] == $domain_uuid ? "selected='selected'" : null).">".escape($row['domain_name'])."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['description-domain_name']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-enabled']."\n";
@@ -76,7 +76,12 @@ if (!class_exists('call_block')) {
//get necessary call block details
if (is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select ".$this->uuid_prefix."uuid as uuid, call_block_number from v_".$this->table." ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "where ( ";
$sql .= " domain_uuid = :domain_uuid ";
if (permission_exists('call_block_domain')) {
$sql .= " or domain_uuid is null ";
}
$sql .= ") ";
$sql .= "and ".$this->uuid_prefix."uuid in (".implode(', ', $uuids).") ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
@@ -93,7 +98,9 @@ if (!class_exists('call_block')) {
$x = 0;
foreach ($call_block_numbers as $call_block_uuid => $call_block_number) {
$array[$this->table][$x][$this->uuid_prefix.'uuid'] = $call_block_uuid;
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
if (!permission_exists('call_block_domain')) {
$array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
}
$x++;
}
-13
View File
@@ -95,14 +95,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_call_broadcasts";
$apps[$x]['db'][$y]['table']['parent'] = "";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_broadcast_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "call_broadcast_uuid";
//$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'][0] = "call_call_broadcast_uuid";
//$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'][1] = "broadcast_uuid";
@@ -121,11 +113,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "broadcast_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
+66 -73
View File
@@ -6,6 +6,7 @@ $text['title-call_broadcasts']['ar-eg'] = "البث دعوة";
$text['title-call_broadcasts']['de-at'] = "Rundrufe";
$text['title-call_broadcasts']['de-ch'] = "Rundrufe";
$text['title-call_broadcasts']['de-de'] = "Rundrufe";
$text['title-call_broadcasts']['el-gr'] = "Εκπομπές κλήσεων";
$text['title-call_broadcasts']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcasts']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcasts']['fr-ca'] = "Campagne d'appels";
@@ -30,6 +31,7 @@ $text['title-call_broadcast']['ar-eg'] = "بث دعوة";
$text['title-call_broadcast']['de-at'] = "Rundrufe";
$text['title-call_broadcast']['de-ch'] = "Rundrufe";
$text['title-call_broadcast']['de-de'] = "Rundrufe";
$text['title-call_broadcast']['el-gr'] = "Μετάδοση κλήσης";
$text['title-call_broadcast']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcast']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['title-call_broadcast']['fr-ca'] = "Campagne d'appels";
@@ -54,6 +56,7 @@ $text['title_description-call_broadcast']['ar-eg'] = "إدارة تسليم ال
$text['title_description-call_broadcast']['de-at'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['de-ch'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['de-de'] = "Verwalten Sie die Zustellung von aufgezeichneten Nachrichten an Massenempfänger.";
$text['title_description-call_broadcast']['el-gr'] = "Διαχειριστείτε την παράδοση προηχογραφημένων μηνυμάτων σε μαζικούς παραλήπτες.";
$text['title_description-call_broadcast']['es-cl'] = "Gestionar el envío de mensajes pregrabados a destinatarios masivos.";
$text['title_description-call_broadcast']['es-mx'] = "Gestionar el envío de mensajes pregrabados a destinatarios masivos.";
$text['title_description-call_broadcast']['fr-ca'] = "Gérez la livraison de messages préenregistrés aux destinataires en masse.";
@@ -78,6 +81,7 @@ $text['option-true']['ar-eg'] = "حقيقي";
$text['option-true']['de-at'] = "Ein";
$text['option-true']['de-ch'] = "Ein";
$text['option-true']['de-de'] = "Ein";
$text['option-true']['el-gr'] = "Αληθής";
$text['option-true']['es-cl'] = "Verdadero";
$text['option-true']['es-mx'] = "Verdadero";
$text['option-true']['fr-ca'] = "Oui";
@@ -102,6 +106,7 @@ $text['option-false']['ar-eg'] = "خطأ شنيع";
$text['option-false']['de-at'] = "Aus";
$text['option-false']['de-ch'] = "Aus";
$text['option-false']['de-de'] = "Aus";
$text['option-false']['el-gr'] = "Ψευδής";
$text['option-false']['es-cl'] = "Falso";
$text['option-false']['es-mx'] = "Falso";
$text['option-false']['fr-ca'] = "Non";
@@ -126,6 +131,7 @@ $text['label-view-calls']['ar-eg'] = "مشاهدة المكالمات";
$text['label-view-calls']['de-at'] = "Anrufe ansehen";
$text['label-view-calls']['de-ch'] = "Anrufe ansehen";
$text['label-view-calls']['de-de'] = "Anrufe ansehen";
$text['label-view-calls']['el-gr'] = "Προβολή κλήσεων";
$text['label-view-calls']['es-cl'] = "Ver llamadas";
$text['label-view-calls']['es-mx'] = "Ver llamadas";
$text['label-view-calls']['fr-ca'] = "Voir les appels";
@@ -150,6 +156,7 @@ $text['label-start_time']['ar-eg'] = "وقت البدء";
$text['label-start_time']['de-at'] = "Startzeit";
$text['label-start_time']['de-ch'] = "Startzeit";
$text['label-start_time']['de-de'] = "Startzeit";
$text['label-start_time']['el-gr'] = "Ωρα έναρξης";
$text['label-start_time']['es-cl'] = "Hora de inicio";
$text['label-start_time']['es-mx'] = "Hora de inicio";
$text['label-start_time']['fr-ca'] = "Heure de début";
@@ -174,6 +181,7 @@ $text['label-timeout']['ar-eg'] = "نفذ الوقت";
$text['label-timeout']['de-at'] = "Zeitüberschreitung";
$text['label-timeout']['de-ch'] = "Zeitüberschreitung";
$text['label-timeout']['de-de'] = "Zeitüberschreitung";
$text['label-timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-timeout']['es-cl'] = "Tiempo Líimite";
$text['label-timeout']['es-mx'] = "Tiempo Líimite";
$text['label-timeout']['fr-ca'] = "Temps libre";
@@ -198,6 +206,7 @@ $text['label-phone']['ar-eg'] = "قائمة رقم الهاتف";
$text['label-phone']['de-at'] = "Liste der Telefonnummern";
$text['label-phone']['de-ch'] = "Liste der Telefonnummern";
$text['label-phone']['de-de'] = "Liste der Telefonnummern";
$text['label-phone']['el-gr'] = "Τηλεφωνικοί αριθμοί";
$text['label-phone']['es-cl'] = "Lista de Números de Telefono";
$text['label-phone']['es-mx'] = "Lista de Números de Telefono";
$text['label-phone']['fr-ca'] = "Liste de Numéros de téléphone";
@@ -222,6 +231,7 @@ $text['label-message']['ar-eg'] = "رسالة";
$text['label-message']['de-at'] = "Nachricht";
$text['label-message']['de-ch'] = "Nachricht";
$text['label-message']['de-de'] = "Nachricht";
$text['label-message']['el-gr'] = "Μήνυμα";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['es-mx'] = "Mensaje";
$text['label-message']['fr-ca'] = "Message";
@@ -246,6 +256,7 @@ $text['label-has-been']['ar-eg'] = "قد بدأ";
$text['label-has-been']['de-at'] = "wurde gestartet";
$text['label-has-been']['de-ch'] = "wurde gestartet";
$text['label-has-been']['de-de'] = "wurde gestartet";
$text['label-has-been']['el-gr'] = "έχει ξεκινήσει";
$text['label-has-been']['es-cl'] = "iniciada";
$text['label-has-been']['es-mx'] = "iniciada";
$text['label-has-been']['fr-ca'] = "a commencé";
@@ -270,6 +281,7 @@ $text['label-destination']['ar-eg'] = "رقم الوجهة";
$text['label-destination']['de-at'] = "Zielnummer";
$text['label-destination']['de-ch'] = "Zielnummer";
$text['label-destination']['de-de'] = "Zielnummer";
$text['label-destination']['el-gr'] = "Αριθμός προορισμού";
$text['label-destination']['es-cl'] = "Número de Destino";
$text['label-destination']['es-mx'] = "Número de Destino";
$text['label-destination']['fr-ca'] = "Numéro de Destination";
@@ -294,6 +306,7 @@ $text['label-concurrent-limit']['ar-eg'] = "الحد المتزامن";
$text['label-concurrent-limit']['de-at'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['de-ch'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['de-de'] = "Gleichzeitige Anrufe";
$text['label-concurrent-limit']['el-gr'] = "Ταυτόχρονο όριο";
$text['label-concurrent-limit']['es-cl'] = "Límite de concurrencia";
$text['label-concurrent-limit']['es-mx'] = "Límite de concurrencia";
$text['label-concurrent-limit']['fr-ca'] = "Appels Simultanés";
@@ -318,6 +331,7 @@ $text['label-callerid-number']['ar-eg'] = "رقم هوية المتصل";
$text['label-callerid-number']['de-at'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['de-de'] = "Anruferkennung (Nummer)";
$text['label-callerid-number']['el-gr'] = "Αριθμός αναγνώρισης καλούντος";
$text['label-callerid-number']['es-cl'] = "Número de Origen";
$text['label-callerid-number']['es-mx'] = "Número de Origen";
$text['label-callerid-number']['fr-ca'] = "Numéro d'appelant";
@@ -342,6 +356,7 @@ $text['label-caller-id-name']['ar-eg'] = "اسم معرف المتصل";
$text['label-caller-id-name']['de-at'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-ch'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-de'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['el-gr'] = "Όνομα αναγνώρισης κλήσης";
$text['label-caller-id-name']['es-cl'] = "Nombre de origen";
$text['label-caller-id-name']['es-mx'] = "Nombre de origen";
$text['label-caller-id-name']['fr-ca'] = "Nom d'appelant";
@@ -366,6 +381,7 @@ $text['label-call-broadcasts']['ar-eg'] = "البث دعوة";
$text['label-call-broadcasts']['de-at'] = "Rundrufe";
$text['label-call-broadcasts']['de-ch'] = "Rundrufe";
$text['label-call-broadcasts']['de-de'] = "Rundrufe";
$text['label-call-broadcasts']['el-gr'] = "Εκπομπές κλήσεων";
$text['label-call-broadcasts']['es-cl'] = "Llamadas Masivas (Broadcast)";
$text['label-call-broadcasts']['es-mx'] = "Llamadas Masivas (Broadcast)";
$text['label-call-broadcasts']['fr-ca'] = "Diffusions d'appels";
@@ -390,6 +406,7 @@ $text['label-call-broadcast']['ar-eg'] = "بث دعوة";
$text['label-call-broadcast']['de-at'] = "Rundrufe";
$text['label-call-broadcast']['de-ch'] = "Rundrufe";
$text['label-call-broadcast']['de-de'] = "Rundrufe";
$text['label-call-broadcast']['el-gr'] = "Μετάδοση κλήσης";
$text['label-call-broadcast']['es-cl'] = "Llamada Masiva (Broadcast)";
$text['label-call-broadcast']['es-mx'] = "Llamada Masiva (Broadcast)";
$text['label-call-broadcast']['fr-ca'] = "Diffusion d'appels";
@@ -414,6 +431,7 @@ $text['label-avmd']['ar-eg'] = "كشف البريد الصوتي";
$text['label-avmd']['de-at'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['de-ch'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['de-de'] = "Erkennung von Sprachnachrichten";
$text['label-avmd']['el-gr'] = "Ανίχνευση τηλεφωνητή";
$text['label-avmd']['es-cl'] = "Detección de correo de voz";
$text['label-avmd']['es-mx'] = "Detección de correo de voz";
$text['label-avmd']['fr-ca'] = "Détection de la messagerie vocale";
@@ -438,6 +456,7 @@ $text['label-broadcast_toll_allow']['ar-eg'] = "عدد مسموح به";
$text['label-broadcast_toll_allow']['de-at'] = "Berechtigung";
$text['label-broadcast_toll_allow']['de-ch'] = "Berechtigung";
$text['label-broadcast_toll_allow']['de-de'] = "Berechtigung";
$text['label-broadcast_toll_allow']['el-gr'] = "Επιτρέπονται διόδια";
$text['label-broadcast_toll_allow']['es-cl'] = "Permitir Tarifas Especiales";
$text['label-broadcast_toll_allow']['es-mx'] = "Permitir Tarifas Especiales";
$text['label-broadcast_toll_allow']['fr-ca'] = "Permis de péage";
@@ -462,6 +481,7 @@ $text['label-accountcode']['ar-eg'] = "رمز الحساب";
$text['label-accountcode']['de-at'] = "Kontoschlüssel";
$text['label-accountcode']['de-ch'] = "Kontoschlüssel";
$text['label-accountcode']['de-de'] = "Kontoschlüssel";
$text['label-accountcode']['el-gr'] = "Κωδικός λογαριασμού";
$text['label-accountcode']['es-cl'] = "Código de cuenta";
$text['label-accountcode']['es-mx'] = "Código de cuenta";
$text['label-accountcode']['fr-ca'] = "Code de compte";
@@ -486,6 +506,7 @@ $text['label-sample_file']['ar-eg'] = "نموذج لملف CSV";
$text['label-sample_file']['de-at'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['de-ch'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['de-de'] = "Beispiel-CSV-Datei";
$text['label-sample_file']['el-gr'] = "Δείγμα αρχείου CSV";
$text['label-sample_file']['es-cl'] = "Archivo CSV de muestra";
$text['label-sample_file']['es-mx'] = "Archivo CSV de muestra";
$text['label-sample_file']['fr-ca'] = "Exemple de fichier CSV";
@@ -504,75 +525,30 @@ $text['label-sample_file']['zh-cn'] = "示例 CSV 文件";
$text['label-sample_file']['ja-jp'] = "サンプル CSV ファイル";
$text['label-sample_file']['ko-kr'] = "샘플 CSV 파일";
$text['label-list_example']['en-us'] = "Number|First,Last
Number|First,Last
...";
$text['label-list_example']['en-gb'] = "Number|First,Last
Number|First,Last
...";
$text['label-list_example']['ar-eg'] = "رقم|أولاً,آخر
رقم|أولاً,آخر
...";
$text['label-list_example']['de-at'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['de-ch'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['de-de'] = "Nummer|Erste,Zuletzt
Nummer|Erste,Zuletzt
...";
$text['label-list_example']['es-cl'] = "Número|Primero,Último
Número|Primero,Último
...";
$text['label-list_example']['es-mx'] = "Número|Primero,Último
Número|Primero,Último
...";
$text['label-list_example']['fr-ca'] = "Nombre|First,D'abord
Nombre|D'abord,Last
...";
$text['label-list_example']['fr-fr'] = "Nombre|First,D'abord
Nombre|D'abord,Last
...";
$text['label-list_example']['he-il'] = "מספר|ראשון,אחרון
מספר|ראשון,אחרון
...";
$text['label-list_example']['it-it'] = "Numero|Primo,Scorso
Numero|Primo,Scorso
...";
$text['label-list_example']['nl-nl'] = "Nummer|Eerste,Laatste
Nummer|Eerste,Laatste
...";
$text['label-list_example']['pl-pl'] = "Numer|Pierwsze,Ostatnie
Numer|Pierwsze,Ostatnie
...";
$text['label-list_example']['pt-br'] = "Número|Primeiro,Durar
Número|Primeiro,Durar
...";
$text['label-list_example']['pt-pt'] = "Número|Primeiro,Durar
Número|Primeiro,Durar
...";
$text['label-list_example']['ro-ro'] = "Număr|Primul,Ultimul
Număr|Primul,Ultimul
...";
$text['label-list_example']['ru-ru'] = "Число|Первый,Последний
Число|Первый,Последний
...";
$text['label-list_example']['sv-se'] = "siffra|Först,Sista
siffra|Först,Sista
...";
$text['label-list_example']['uk-ua'] = "Номер|Перший,Останній
Номер|Перший,Останній
...";
$text['label-list_example']['zh-cn'] = "编号|第一个,最后一个
编号|第一个,最后一个
...";
$text['label-list_example']['ja-jp'] = "番号|最初、最後
番号|最初、最後
...";
$text['label-list_example']['ko-kr'] = "번호|이름, 성
번호|이름, 성
...";
$text['label-list_example']['en-us'] = "Number|First,LastNumber|First,Last...";
$text['label-list_example']['en-gb'] = "Number|First,LastNumber|First,Last...";
$text['label-list_example']['ar-eg'] = "الرقم|الأول،الرقم الأخير|الأول،الأخير...";
$text['label-list_example']['de-at'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['de-ch'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['de-de'] = "Nummer|Erste,ZuletztNummer|Erste,Zuletzt...";
$text['label-list_example']['el-gr'] = "Αριθμός|Πρώτος,ΤελευταίοςΑριθμός|Πρώτος,Τελευταίος...";
$text['label-list_example']['es-cl'] = "Número|Primero,ÚltimoNúmero|Primero,Último...";
$text['label-list_example']['es-mx'] = "Número|Primero,ÚltimoNúmero|Primero,Último...";
$text['label-list_example']['fr-ca'] = "Nombre|First,D'abordNombre|D'abord,Last...";
$text['label-list_example']['fr-fr'] = "Nombre|First,D'abordNombre|D'abord,Last...";
$text['label-list_example']['he-il'] = "מספר|ראשון, מספר אחרון|ראשון, אחרון...";
$text['label-list_example']['it-it'] = "Numero|Primo,ScorsoNumero|Primo,Scorso...";
$text['label-list_example']['nl-nl'] = "Nummer|Eerste,LaatsteNummer|Eerste,Laatste...";
$text['label-list_example']['pl-pl'] = "Numer|Pierwsze,OstatnieNumer|Pierwsze,Ostatnie...";
$text['label-list_example']['pt-br'] = "Número|Primeiro,DurarNúmero|Primeiro,Durar...";
$text['label-list_example']['pt-pt'] = "Número|Primeiro,DurarNúmero|Primeiro,Durar...";
$text['label-list_example']['ro-ro'] = "Număr|Primul,UltimulNumăr|Primul,Ultimul...";
$text['label-list_example']['ru-ru'] = "Число|Первый,ПоследнийЧисло|Первый,Последний...";
$text['label-list_example']['sv-se'] = "siffra|Först,Sistasiffra|Först,Sista...";
$text['label-list_example']['uk-ua'] = "Номер|Перший,ОстаннійНомер|Перший,Останній...";
$text['label-list_example']['zh-cn'] = "编号|第一个,最后一个编号|第一个,最后一个...";
$text['label-list_example']['ja-jp'] = "番号|最初、最後番号|最初、最後...";
$text['label-list_example']['ko-kr'] = "번호|이름, 성번호|이름, 성...";
$text['description-start_time']['en-us'] = "The date and time to begin sending calls.";
$text['description-start_time']['en-gb'] = "The date and time to begin sending calls.";
@@ -580,6 +556,7 @@ $text['description-start_time']['ar-eg'] = "تاريخ ووقت بدء إرسا
$text['description-start_time']['de-at'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['de-ch'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['de-de'] = "Das Datum und die Uhrzeit für den Beginn des Sendens von Anrufen.";
$text['description-start_time']['el-gr'] = "Η ημερομηνία και η ώρα έναρξης της αποστολής κλήσεων.";
$text['description-start_time']['es-cl'] = "La fecha y hora para comenzar a enviar llamadas.";
$text['description-start_time']['es-mx'] = "La fecha y hora para comenzar a enviar llamadas.";
$text['description-start_time']['fr-ca'] = "La date et l'heure auxquelles commencer à envoyer des appels.";
@@ -604,6 +581,7 @@ $text['description-accountcode']['ar-eg'] = "تستخدم في أغلب الأح
$text['description-accountcode']['de-at'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['de-ch'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['de-de'] = "Wird am häufigsten für Abrechnungssysteme verwendet.";
$text['description-accountcode']['el-gr'] = "Χρησιμοποιείται συχνότερα για συστήματα τιμολόγησης.";
$text['description-accountcode']['es-cl'] = "Se utiliza con mayor frecuencia para los sistemas de facturación.";
$text['description-accountcode']['es-mx'] = "Se utiliza con mayor frecuencia para los sistemas de facturación.";
$text['description-accountcode']['fr-ca'] = "Utilisé le plus souvent pour les systèmes de facturation.";
@@ -628,6 +606,7 @@ $text['description-timeout']['ar-eg'] = "حدد المهلة المطلقة با
$text['description-timeout']['de-at'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['de-ch'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['de-de'] = "Geben Sie die absolute Zeitüberschreitung in Sekunden an.";
$text['description-timeout']['el-gr'] = "Καθορίστε το απόλυτο χρονικό όριο σε δευτερόλεπτα.";
$text['description-timeout']['es-cl'] = "Especifique el tiempo de espera absoluto en segundos.";
$text['description-timeout']['es-mx'] = "Especifique el tiempo de espera absoluto en segundos.";
$text['description-timeout']['fr-ca'] = "Spécifiez le délai d'expiration absolu en secondes";
@@ -652,6 +631,7 @@ $text['description-phone']['ar-eg'] = "حدد ملف TXT / CSV للتحميل ،
$text['description-phone']['de-at'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['de-ch'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['de-de'] = "Optional: Ergänzen Sie eine Liste von Telefonnummern, eine Nummer pro Zeile im folgenden Format: 123-123-1234|Nachname,Vorname";
$text['description-phone']['el-gr'] = "Επιλέξτε ένα αρχείο TXT/CSV για μεταφόρτωση ή εισαγάγετε Αριθμούς τηλεφώνου έναν ανά γραμμή στη μορφή που φαίνεται παραπάνω.";
$text['description-phone']['es-cl'] = "Opcional, definir una lista de números de telefono, uno por línea en el siguiente formato: 123-123-1234|Apellido,Nombre";
$text['description-phone']['es-mx'] = "Opcional, definir una lista de números de telefono, uno por línea en el siguiente formato: 123-123-1234|Apellido,Nombre";
$text['description-phone']['fr-ca'] = "Optionnel, Insérer une liste de numéros de téléphone, un par ligne, dans le format suivant ; 0123456789|Nom,Prénom";
@@ -676,6 +656,7 @@ $text['description-name']['ar-eg'] = "أدخل الاسم هنا.";
$text['description-name']['de-at'] = "Geben Sie den Namen an.";
$text['description-name']['de-ch'] = "Geben Sie den Namen an.";
$text['description-name']['de-de'] = "Geben Sie den Namen an.";
$text['description-name']['el-gr'] = "Εισαγάγετε το όνομα εδώ.";
$text['description-name']['es-cl'] = "Ingrese el nombre aquí.";
$text['description-name']['es-mx'] = "Ingrese el nombre aquí.";
$text['description-name']['fr-ca'] = "Insérer le Nom.";
@@ -700,6 +681,7 @@ $text['description-info']['ar-eg'] = "أدخل الوصف هنا.";
$text['description-info']['de-at'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['de-ch'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['de-de'] = "Geben Sie eine Beschreibung an.";
$text['description-info']['el-gr'] = "Εισαγάγετε την περιγραφή εδώ.";
$text['description-info']['es-cl'] = "Ingrese descripción aquí.";
$text['description-info']['es-mx'] = "Ingrese descripción aquí.";
$text['description-info']['fr-ca'] = "Entrez la description ici";
@@ -724,6 +706,7 @@ $text['description-destination']['ar-eg'] = "أرسل المكالمة إلى ر
$text['description-destination']['de-at'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['de-ch'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['de-de'] = "Der Anruf wird an eine Nebenstelle, eine Automatische Vermittlung, ein Konferenzraum oder jede andere Nummer weitergeleitet.";
$text['description-destination']['el-gr'] = "Στείλτε την κλήση σε μια επέκταση, ένα μενού IVR, αίθουσα συνεδριάσεων ή οποιονδήποτε άλλο αριθμό.";
$text['description-destination']['es-cl'] = "Enviar la llamada a extension a IVR, conferencias o cualquier otro número.";
$text['description-destination']['es-mx'] = "Enviar la llamada a extension a IVR, conferencias o cualquier otro número.";
$text['description-destination']['fr-ca'] = "Emettre l'appel vers un SVI, salle de conférence, ou tout autre numéro.";
@@ -748,6 +731,7 @@ $text['description-concurrent-limit']['ar-eg'] = "حدد العدد التقري
$text['description-concurrent-limit']['de-at'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['de-ch'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['de-de'] = "Begrenzt die Anzahl gleichzeitiger Anrufe. Kein Limit wenn leer gelassen.";
$text['description-concurrent-limit']['el-gr'] = "Περιορίστε τον κατά προσέγγιση αριθμό ταυτόχρονων κλήσεων. Αφήστε το κενό χωρίς όριο.";
$text['description-concurrent-limit']['es-cl'] = "Limitar el número de llamadas simultaneas. Deje en blanco para no establecer un límite.";
$text['description-concurrent-limit']['es-mx'] = "Limitar el número de llamadas simultaneas. Deje en blanco para no establecer un límite.";
$text['description-concurrent-limit']['fr-ca'] = "Limite le nombre d'appels concurrents. Laisser vide pour illimité.";
@@ -769,9 +753,10 @@ $text['description-concurrent-limit']['ko-kr'] = "대략적인 동시 호출 수
$text['description-caller-id-number']['en-us'] = "Applicable if the provider that allow the Caller ID number to be sent. default: 0000000000";
$text['description-caller-id-number']['en-gb'] = "Applicable if the provider that allow the Caller ID number to be sent. default: 0000000000";
$text['description-caller-id-number']['ar-eg'] = "ينطبق إذا كان الموفر الذي يسمح بإرسال رقم معرف المتصل. الافتراضي: 0000000000";
$text['description-caller-id-number']['de-at'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-de'] = "Geben Sie die Anruferkennung (Nummer) hier ein.";
$text['description-caller-id-number']['de-at'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['de-ch'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['de-de'] = "Gilt, wenn der Anbieter das Senden der Anrufer-ID-Nummer zulässt. Standard: 0000000000";
$text['description-caller-id-number']['el-gr'] = "Ισχύει εάν ο πάροχος που επιτρέπει την αποστολή του αριθμού αναγνώρισης καλούντος. προεπιλογή: 0000000000";
$text['description-caller-id-number']['es-cl'] = "Aplicable si el proveedor que permite enviar el número de Caller ID. predeterminado: 0000000000";
$text['description-caller-id-number']['es-mx'] = "Aplicable si el proveedor que permite enviar el número de Caller ID. predeterminado: 0000000000";
$text['description-caller-id-number']['fr-ca'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du numéro d'appelant. Par défaut: 0000000000";
@@ -796,6 +781,7 @@ $text['description-caller-id-name']['ar-eg'] = "قابل للتطبيق إذا
$text['description-caller-id-name']['de-at'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['de-ch'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['de-de'] = "Geben Sie die Anruferkennung (Name) hier ein, sofern der Provider dieses unterstützt. Default: anonym.";
$text['description-caller-id-name']['el-gr'] = "Ισχύει εάν ο πάροχος επιτρέπει τον ορισμό του ονόματος αναγνώρισης καλούντος. προεπιλογή: ανώνυμος";
$text['description-caller-id-name']['es-cl'] = "Applicable si el proveedor permite enviar el número de origen. Por defecto: 0000000000";
$text['description-caller-id-name']['es-mx'] = "Applicable si el proveedor permite enviar el número de origen. Por defecto: 0000000000";
$text['description-caller-id-name']['fr-ca'] = "Applicable uniquement si le fournisseur d'accès authorise l'acheminement du nom d'appelant. Par défaut: anonymous";
@@ -820,6 +806,7 @@ $text['description-avmd']['ar-eg'] = "حدد ما إذا كنت تريد تمك
$text['description-avmd']['de-at'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['de-ch'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['de-de'] = "Wählen Sie ob die Erkennung von Sprach-Mailboxen und automatischen Anrufbeantwortern Ein- oder Ausgeschaltet werden soll.";
$text['description-avmd']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιήσετε ή θα απενεργοποιήσετε τον εντοπισμό συστημάτων μηνυμάτων τηλεφωνητή και τηλεφωνητή.";
$text['description-avmd']['es-cl'] = "Seleccione si desea activar o desactivar la detección de sistemas de contestador automático de mensajes de correo de voz y.";
$text['description-avmd']['es-mx'] = "Seleccione si desea activar o desactivar la detección de sistemas de contestador automático de mensajes de correo de voz y.";
$text['description-avmd']['fr-ca'] = "Indiquez si vous souhaitez activer ou désactiver la détection de la messagerie vocale et les systèmes de machines de répondeur.";
@@ -844,6 +831,7 @@ $text['description-broadcast_toll_allow']['ar-eg'] = "أدخل قيمة رسوم
$text['description-broadcast_toll_allow']['de-at'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['de-ch'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['de-de'] = "Geben Sie die Berechtigung an. (z.B.: domestic, international, local)";
$text['description-broadcast_toll_allow']['el-gr'] = "Εισαγάγετε την τιμή επιτρεπόμενης διοδίων εδώ. (Παραδείγματα: εγχώριο, διεθνές, τοπικό)";
$text['description-broadcast_toll_allow']['es-cl'] = "Ingrese el tipo de tarifa especial a permitir (ej: doméstica, internacional, local).";
$text['description-broadcast_toll_allow']['es-mx'] = "Ingrese el tipo de tarifa especial a permitir (ej: doméstica, internacional, local).";
$text['description-broadcast_toll_allow']['fr-ca'] = "Insérer les droits d'accès. (Exemples: domestic,international,local)";
@@ -856,7 +844,7 @@ $text['description-broadcast_toll_allow']['pt-br'] = "Insira as categorias de li
$text['description-broadcast_toll_allow']['pt-pt'] = "Introduza as permissões aqui. (Exemplos: internacional, local)";
$text['description-broadcast_toll_allow']['ro-ro'] = "Introduceți valoarea taxei permise aici. (Exemple: intern, internațional, local)";
$text['description-broadcast_toll_allow']['ru-ru'] = "Введите здесь доступные значения. (Примеры: domestic,international,local)";
$text['description-broadcast_toll_allow']['sv-se'] = "Ange 'toll allow' värde här. (Exempel: domestic,international,local)";
$text['description-broadcast_toll_allow']['sv-se'] = "Ange 'Tull Tillåt' värde här. (Exempel: domestic,international,local)";
$text['description-broadcast_toll_allow']['uk-ua'] = "Введіть дозволене значення мита тут. (Приклади: внутрішні, міжнародні, місцеві)";
$text['description-broadcast_toll_allow']['zh-cn'] = "在此处输入通行费允许值。 (示例:国内、国际、本地)";
$text['description-broadcast_toll_allow']['ja-jp'] = "通行料の値をここに入力します。 (例:国内、海外、ローカル)";
@@ -868,6 +856,7 @@ $text['confirm-update']['ar-eg'] = "Оновлення завершено";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-de'] = "Aktualisierung durchgeführt";
$text['confirm-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['es-mx'] = "Actualización Completa";
$text['confirm-update']['fr-ca'] = "Mise à jour terminée";
@@ -892,6 +881,7 @@ $text['confirm-name']['ar-eg'] = "يرجى تقديم: الاسم";
$text['confirm-name']['de-at'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['de-ch'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['de-de'] = "Bitte geben Sie den Namen an";
$text['confirm-name']['el-gr'] = "Δώστε: Όνομα";
$text['confirm-name']['es-cl'] = "Por favor agregue: Nombre";
$text['confirm-name']['es-mx'] = "Por favor agregue: Nombre";
$text['confirm-name']['fr-ca'] = "Merci d'indiquer: Nom";
@@ -916,6 +906,7 @@ $text['confirm-delete-info']['ar-eg'] = "هل تريد حقًا حذف هذا؟"
$text['confirm-delete-info']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['de-ch'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['de-de'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-info']['el-gr'] = "Θέλετε πραγματικά να το διαγράψετε;";
$text['confirm-delete-info']['es-cl'] = "¿Desea realmente eliminar esto?";
$text['confirm-delete-info']['es-mx'] = "¿Desea realmente eliminar esto?";
$text['confirm-delete-info']['fr-ca'] = "Voulez-vous vraiment supprimer cela?";
@@ -940,6 +931,7 @@ $text['confirm-add']['ar-eg'] = "أضف مكتمل";
$text['confirm-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-ch'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-de'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['el-gr'] = "Προσθήκη Ολοκληρωμένη";
$text['confirm-add']['es-cl'] = "Ingreso Completo";
$text['confirm-add']['es-mx'] = "Ingreso Completo";
$text['confirm-add']['fr-ca'] = "Ajouté";
@@ -964,6 +956,7 @@ $text['file-error']['ar-eg'] = "عذرا ، نوع الملف غير مسموح
$text['file-error']['de-at'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['de-ch'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['de-de'] = "Entschuldigung, Dateityp nicht erlaubt";
$text['file-error']['el-gr'] = "Λυπούμαστε, ο τύπος αρχείου δεν επιτρέπεται";
$text['file-error']['es-cl'] = "Lo sentimos, no se permite el tipo de archivo";
$text['file-error']['es-mx'] = "Lo sentimos, no se permite el tipo de archivo";
$text['file-error']['fr-ca'] = "Désolé, le type de fichier n'est pas autorisé";
+4 -5
View File
@@ -130,7 +130,7 @@
$broadcast_name = str_replace("'", "", $broadcast_name);
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$fp = event_socket::create();
//get information over event socket
if (!$fp) {
@@ -196,11 +196,11 @@
//if the event socket connection is lost then re-connect
if (!$fp) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$fp = event_socket::create();
}
//method 1
$response = trim(event_socket_request($fp, 'api '.$cmd));
$response = event_socket::command($cmd);
//method 2
//cmd_async($_SESSION['switch']['bin']['dir']."/fs_cli -x \"".$cmd."\";");
@@ -216,8 +216,7 @@
$count++;
}
}
fclose($fp);
echo "<div align='center'>\n";
echo "<table width='50%'>\n";
echo "<tr>\n";
+3 -3
View File
@@ -45,10 +45,10 @@ else {
if (is_uuid($uuid)) {
//show the result
if (count($_GET) > 0) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$fp = event_socket::create();
if ($fp !== false) {
$cmd = "sched_del ".$uuid;
$result = event_socket_request($fp, 'api '.$cmd);
$result = event_socket::api($cmd);
message::add(htmlentities($result));
}
}
+123 -11
View File
@@ -6,6 +6,7 @@ $text['title-call_center_queue_activity']['ar-eg'] = "نشاط قائمة انت
$text['title-call_center_queue_activity']['de-at'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['de-ch'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['de-de'] = "Callcenter Warteschlangen Aktivität";
$text['title-call_center_queue_activity']['el-gr'] = "Δραστηριότητα ουράς τηλεφωνικού κέντρου";
$text['title-call_center_queue_activity']['es-cl'] = "Actividad de Cola del Centro de Llamados";
$text['title-call_center_queue_activity']['es-mx'] = "Actividad de Cola del Centro de Llamados";
$text['title-call_center_queue_activity']['fr-ca'] = "Activité des files d'attente du centre d'appel";
@@ -20,6 +21,7 @@ $text['title-call_center_queue_activity']['ro-ro'] = "Activitate de coadă a cen
$text['title-call_center_queue_activity']['ru-ru'] = "Активность очередей Колл-центра";
$text['title-call_center_queue_activity']['sv-se'] = "Call Center Grupp Aktivitet";
$text['title-call_center_queue_activity']['uk-ua'] = "Діяльність черги кол-центру";
$text['title-call_center_queue_activity']['tr-tr'] = "Çağrı Merkezi Sıra Etkinliği";
$text['title-call_center_queue_activity']['zh-cn'] = "呼叫中心队列活动";
$text['title-call_center_queue_activity']['ja-jp'] = "コール センター キュー アクティビティ";
$text['title-call_center_queue_activity']['ko-kr'] = "콜센터 대기열 활동";
@@ -30,6 +32,7 @@ $text['title-active_call_center']['ar-eg'] = "مركز الاتصال النشط
$text['title-active_call_center']['de-at'] = "Aktive Callcenter";
$text['title-active_call_center']['de-ch'] = "Aktive Callcenter";
$text['title-active_call_center']['de-de'] = "Aktive Callcenter";
$text['title-active_call_center']['el-gr'] = "Ενεργό τηλεφωνικό κέντρο";
$text['title-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['title-active_call_center']['es-mx'] = "Centro de Llamados Activo";
$text['title-active_call_center']['fr-ca'] = "Centre d'appel Actif";
@@ -44,6 +47,7 @@ $text['title-active_call_center']['ro-ro'] = "Centru de apeluri activ";
$text['title-active_call_center']['ru-ru'] = "Активные Колл-центры";
$text['title-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['title-active_call_center']['uk-ua'] = "Активний Call Center";
$text['title-active_call_center']['tr-tr'] = "Aktif Çağrı Merkezi";
$text['title-active_call_center']['zh-cn'] = "主动呼叫中心";
$text['title-active_call_center']['ja-jp'] = "アクティブ コール センター";
$text['title-active_call_center']['ko-kr'] = "활성 콜 센터";
@@ -54,6 +58,7 @@ $text['message-confirm']['ar-eg'] = "هل تريد حقا أن تفعل هذا؟
$text['message-confirm']['de-at'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['de-ch'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['de-de'] = "Wollen Sie das wirklich tun?";
$text['message-confirm']['el-gr'] = "Θέλετε πραγματικά να το κάνετε αυτό;";
$text['message-confirm']['es-cl'] = "¿Realmente desea ejecutar esta operación?";
$text['message-confirm']['es-mx'] = "¿Realmente desea ejecutar esta operación?";
$text['message-confirm']['fr-ca'] = "Voulez-vous vraiment faire cela?";
@@ -68,6 +73,7 @@ $text['message-confirm']['ro-ro'] = "Chiar vrei să faci asta?";
$text['message-confirm']['ru-ru'] = "Вы действительно хотите это сдедать?";
$text['message-confirm']['sv-se'] = "Vill du verkligen göra det här?";
$text['message-confirm']['uk-ua'] = "Ви дійсно хочете це зробити?";
$text['message-confirm']['tr-tr'] = "Gerçekten bunu yapmak istiyor musun?";
$text['message-confirm']['zh-cn'] = "你真的要这样做吗?";
$text['message-confirm']['ja-jp'] = "本当にやりたいですか?";
$text['message-confirm']['ko-kr'] = "정말로 이것을 하시겠습니까?";
@@ -78,6 +84,7 @@ $text['label-waiting']['ar-eg'] = "انتظار";
$text['label-waiting']['de-at'] = "Warten";
$text['label-waiting']['de-ch'] = "Warten";
$text['label-waiting']['de-de'] = "Warten";
$text['label-waiting']['el-gr'] = "Αναμονή";
$text['label-waiting']['es-cl'] = "Esperando";
$text['label-waiting']['es-mx'] = "Esperando";
$text['label-waiting']['fr-ca'] = "d'attente";
@@ -92,6 +99,7 @@ $text['label-waiting']['ro-ro'] = "Aşteptare";
$text['label-waiting']['ru-ru'] = "Ожидание";
$text['label-waiting']['sv-se'] = "Väntar";
$text['label-waiting']['uk-ua'] = "Очікування";
$text['label-waiting']['tr-tr'] = "Beklemek";
$text['label-waiting']['zh-cn'] = "等待";
$text['label-waiting']['ja-jp'] = "待っている";
$text['label-waiting']['ko-kr'] = "대기 중";
@@ -102,6 +110,7 @@ $text['label-trying']['ar-eg'] = "محاولة";
$text['label-trying']['de-at'] = "Versuchen";
$text['label-trying']['de-ch'] = "Versuchen";
$text['label-trying']['de-de'] = "Versuchen";
$text['label-trying']['el-gr'] = "Προσπαθεί";
$text['label-trying']['es-cl'] = "Intentando";
$text['label-trying']['es-mx'] = "Intentando";
$text['label-trying']['fr-ca'] = "d'essais";
@@ -116,6 +125,7 @@ $text['label-trying']['ro-ro'] = "Încercând";
$text['label-trying']['ru-ru'] = "Попытка";
$text['label-trying']['sv-se'] = "Försöker";
$text['label-trying']['uk-ua'] = "Намагається";
$text['label-trying']['tr-tr'] = "deniyorum";
$text['label-trying']['zh-cn'] = "试";
$text['label-trying']['ja-jp'] = "しようとしている";
$text['label-trying']['ko-kr'] = "견딜 수 없는";
@@ -126,6 +136,7 @@ $text['label-transfer']['ar-eg'] = "تحويل";
$text['label-transfer']['de-at'] = "Weiterleiten";
$text['label-transfer']['de-ch'] = "Weiterleiten";
$text['label-transfer']['de-de'] = "Weiterleiten";
$text['label-transfer']['el-gr'] = "ΜΕΤΑΦΟΡΑ";
$text['label-transfer']['es-cl'] = "Transferir";
$text['label-transfer']['es-mx'] = "Transferir";
$text['label-transfer']['fr-ca'] = "Transfert";
@@ -140,6 +151,7 @@ $text['label-transfer']['ro-ro'] = "Transfer";
$text['label-transfer']['ru-ru'] = "Перевод";
$text['label-transfer']['sv-se'] = "Överför";
$text['label-transfer']['uk-ua'] = "Трансфер";
$text['label-transfer']['tr-tr'] = "Aktar";
$text['label-transfer']['zh-cn'] = "转移";
$text['label-transfer']['ja-jp'] = "移行";
$text['label-transfer']['ko-kr'] = "옮기다";
@@ -150,6 +162,7 @@ $text['label-time_base_score']['ar-eg'] = "نقاط قاعدة الوقت";
$text['label-time_base_score']['de-at'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['de-ch'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['de-de'] = "Zeitgeber für Klassifikation";
$text['label-time_base_score']['el-gr'] = "Χρονική Βάση Βάσης";
$text['label-time_base_score']['es-cl'] = "Puntuación basada en tiempo";
$text['label-time_base_score']['es-mx'] = "Puntuación basada en tiempo";
$text['label-time_base_score']['fr-ca'] = "Score basé sur le temps";
@@ -164,6 +177,7 @@ $text['label-time_base_score']['ro-ro'] = "Scorul de bază de timp";
$text['label-time_base_score']['ru-ru'] = "Оценка по времени";
$text['label-time_base_score']['sv-se'] = "Tidsbaserat Resultat";
$text['label-time_base_score']['uk-ua'] = "Оцінка бази часу";
$text['label-time_base_score']['tr-tr'] = "Zaman Tabanı Puanı";
$text['label-time_base_score']['zh-cn'] = "时基分数";
$text['label-time_base_score']['ja-jp'] = "タイムベーススコア";
$text['label-time_base_score']['ko-kr'] = "시간축 점수";
@@ -174,6 +188,7 @@ $text['label-time']['ar-eg'] = "التوقيت";
$text['label-time']['de-at'] = "Zeit";
$text['label-time']['de-ch'] = "Zeit";
$text['label-time']['de-de'] = "Zeit";
$text['label-time']['el-gr'] = "χρόνος";
$text['label-time']['es-cl'] = "Tiempo";
$text['label-time']['es-mx'] = "Tiempo";
$text['label-time']['fr-ca'] = "Temps";
@@ -188,6 +203,7 @@ $text['label-time']['ro-ro'] = "Timp";
$text['label-time']['ru-ru'] = "Время";
$text['label-time']['sv-se'] = "Tid";
$text['label-time']['uk-ua'] = "час";
$text['label-time']['tr-tr'] = "Zaman";
$text['label-time']['zh-cn'] = "时间";
$text['label-time']['ja-jp'] = "時間";
$text['label-time']['ko-kr'] = "시간";
@@ -198,6 +214,7 @@ $text['label-tier_state']['ar-eg'] = "دولة الطبقة";
$text['label-tier_state']['de-at'] = "Ebenen-Status";
$text['label-tier_state']['de-ch'] = "Ebenen-Status";
$text['label-tier_state']['de-de'] = "Ebenen-Status";
$text['label-tier_state']['el-gr'] = "Κράτος βαθμίδας";
$text['label-tier_state']['es-cl'] = "Estado de Nivel";
$text['label-tier_state']['es-mx'] = "Estado de Nivel";
$text['label-tier_state']['fr-ca'] = "Etat du Niveau";
@@ -210,8 +227,9 @@ $text['label-tier_state']['pt-br'] = "Nivel de estado";
$text['label-tier_state']['pt-pt'] = "Estado do Nível";
$text['label-tier_state']['ro-ro'] = "Starea nivelului";
$text['label-tier_state']['ru-ru'] = "Состояние компетенции";
$text['label-tier_state']['sv-se'] = "Kunskap Status";
$text['label-tier_state']['sv-se'] = "Nivå Status";
$text['label-tier_state']['uk-ua'] = "Стан рівня";
$text['label-tier_state']['tr-tr'] = "Seviye Durumu";
$text['label-tier_state']['zh-cn'] = "等级状态";
$text['label-tier_state']['ja-jp'] = "層の状態";
$text['label-tier_state']['ko-kr'] = "계층 상태";
@@ -222,6 +240,7 @@ $text['label-tier_rules_apply']['ar-eg'] = "تطبق قواعد الفئة";
$text['label-tier_rules_apply']['de-at'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['de-ch'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['de-de'] = "Ebenen-Regeln werden angewendet";
$text['label-tier_rules_apply']['el-gr'] = "Ισχύουν κανόνες βαθμίδας";
$text['label-tier_rules_apply']['es-cl'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['es-mx'] = "Aplicar Reglas de Nivel";
$text['label-tier_rules_apply']['fr-ca'] = "Appliquer les règles du Niveau";
@@ -234,8 +253,9 @@ $text['label-tier_rules_apply']['pt-br'] = "Aplicar regas de nível";
$text['label-tier_rules_apply']['pt-pt'] = "Aplicar as Regras do Nível";
$text['label-tier_rules_apply']['ro-ro'] = "Se aplică regulile nivelului";
$text['label-tier_rules_apply']['ru-ru'] = "Применять правила компетенции";
$text['label-tier_rules_apply']['sv-se'] = "Kunskaps Regler Gäller";
$text['label-tier_rules_apply']['sv-se'] = "Tillämpa nivåregler";
$text['label-tier_rules_apply']['uk-ua'] = "Застосовуються правила рівня";
$text['label-tier_rules_apply']['tr-tr'] = "Kademe Kuralları Geçerlidir";
$text['label-tier_rules_apply']['zh-cn'] = "等级规则适用";
$text['label-tier_rules_apply']['ja-jp'] = "ティアルール適用";
$text['label-tier_rules_apply']['ko-kr'] = "계층 규칙 적용";
@@ -246,6 +266,7 @@ $text['label-tier_rule_wait_second']['ar-eg'] = "قاعدة الطبقة انت
$text['label-tier_rule_wait_second']['de-at'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['de-ch'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['de-de'] = "Wartezeit für Ebenen-Regel in Sekunden";
$text['label-tier_rule_wait_second']['el-gr'] = "Κανόνας βαθμίδας Περιμένετε δεύτερο";
$text['label-tier_rule_wait_second']['es-cl'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['es-mx'] = "Regla de nível segundo de espera";
$text['label-tier_rule_wait_second']['fr-ca'] = "Attente en secondes de la règle du Niveau";
@@ -258,8 +279,9 @@ $text['label-tier_rule_wait_second']['pt-br'] = "Regra de segundo nível de espe
$text['label-tier_rule_wait_second']['pt-pt'] = "Regra de nível segundo espera";
$text['label-tier_rule_wait_second']['ro-ro'] = "Regula de nivel Așteptați al doilea";
$text['label-tier_rule_wait_second']['ru-ru'] = "Правило компетенции: Ждать секунд";
$text['label-tier_rule_wait_second']['sv-se'] = "Kunskaps Regel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['sv-se'] = "Nivåregel Väntetid i Sekunder";
$text['label-tier_rule_wait_second']['uk-ua'] = "Правило рівня Зачекайте секунду";
$text['label-tier_rule_wait_second']['tr-tr'] = "Kademe Kuralı İkinciyi Bekle";
$text['label-tier_rule_wait_second']['zh-cn'] = "等级规则等待第二";
$text['label-tier_rule_wait_second']['ja-jp'] = "層ルール待機秒";
$text['label-tier_rule_wait_second']['ko-kr'] = "계층 규칙 대기 초";
@@ -270,6 +292,7 @@ $text['label-tier_rule_wait_multiply_level']['ar-eg'] = "الطبقة القاع
$text['label-tier_rule_wait_multiply_level']['de-at'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['de-ch'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['de-de'] = "Regel für Wartezeit-Multiplikator pro Ebene";
$text['label-tier_rule_wait_multiply_level']['el-gr'] = "Επίπεδο πολλαπλασιασμού αναμονής κανόνα κανόνα";
$text['label-tier_rule_wait_multiply_level']['es-cl'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['es-mx'] = "Regla de nivel multiplicar nivel de espera";
$text['label-tier_rule_wait_multiply_level']['fr-ca'] = "Règle d'attente multipliée par Niveau";
@@ -282,8 +305,9 @@ $text['label-tier_rule_wait_multiply_level']['pt-br'] = "Regra de espera multipl
$text['label-tier_rule_wait_multiply_level']['pt-pt'] = "Regra de nível de espera multiplicado pelo nível";
$text['label-tier_rule_wait_multiply_level']['ro-ro'] = "Nivelul Regulă Așteptați Nivelul înmulțirii";
$text['label-tier_rule_wait_multiply_level']['ru-ru'] = "Правило компетенции: Множитель ожидания";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Kunskaps Regel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['sv-se'] = "Nivåregel Väntetid Multipla Värden";
$text['label-tier_rule_wait_multiply_level']['uk-ua'] = "Рівень Правило Очікування Множення Рівень";
$text['label-tier_rule_wait_multiply_level']['tr-tr'] = "Katman Kuralı Bekleme Çarpma Düzeyi";
$text['label-tier_rule_wait_multiply_level']['zh-cn'] = "Tier Rule Wait 乘法级别";
$text['label-tier_rule_wait_multiply_level']['ja-jp'] = "層ルール待機乗算レベル";
$text['label-tier_rule_wait_multiply_level']['ko-kr'] = "계층 규칙 대기 배수 수준";
@@ -294,6 +318,7 @@ $text['label-tier_rule_no_agent_no_wait']['ar-eg'] = "قاعدة الطبقة ل
$text['label-tier_rule_no_agent_no_wait']['de-at'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['de-ch'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['de-de'] = "Ebenen-Regel kein Agent nicht warten";
$text['label-tier_rule_no_agent_no_wait']['el-gr'] = "Κανόνας επιπέδου Όχι Πράκτορας Όχι Αναμονή";
$text['label-tier_rule_no_agent_no_wait']['es-cl'] = "Regla de Nivel sin Agente sin Espera";
$text['label-tier_rule_no_agent_no_wait']['es-mx'] = "Regla de Nivel sin Agente sin Espera";
$text['label-tier_rule_no_agent_no_wait']['fr-ca'] = "Règle du Niveau Pas d'agent, pas d'attente";
@@ -306,8 +331,9 @@ $text['label-tier_rule_no_agent_no_wait']['pt-br'] = "Regra de nível sem espera
$text['label-tier_rule_no_agent_no_wait']['pt-pt'] = "Regra de Nível Sem Agente Sem Espera";
$text['label-tier_rule_no_agent_no_wait']['ro-ro'] = "Regulă de nivel Fără agent Nu așteptați";
$text['label-tier_rule_no_agent_no_wait']['ru-ru'] = "Правило компетенции: Нет оператора, нет ожидания";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Kunskaps Regel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['sv-se'] = "Nivåregel Ingen Agent Ingen Väntan";
$text['label-tier_rule_no_agent_no_wait']['uk-ua'] = "Правило рівня Немає агентів Не чекайте";
$text['label-tier_rule_no_agent_no_wait']['tr-tr'] = "Kademe Kuralı Temsilci Yok Bekleme Yok";
$text['label-tier_rule_no_agent_no_wait']['zh-cn'] = "等级规则没有代理没有等待";
$text['label-tier_rule_no_agent_no_wait']['ja-jp'] = "Tier ルール No Agent No Wait";
$text['label-tier_rule_no_agent_no_wait']['ko-kr'] = "계층 규칙 에이전트 없음 대기 없음";
@@ -318,6 +344,7 @@ $text['label-tier_position']['ar-eg'] = "موقف الطبقة";
$text['label-tier_position']['de-at'] = "Ebenen-Position";
$text['label-tier_position']['de-ch'] = "Ebenen-Position";
$text['label-tier_position']['de-de'] = "Ebenen-Position";
$text['label-tier_position']['el-gr'] = "Θέση Βαθμίδας";
$text['label-tier_position']['es-cl'] = "Posición de Nivel";
$text['label-tier_position']['es-mx'] = "Posición de Nivel";
$text['label-tier_position']['fr-ca'] = "Position du Niveau";
@@ -330,8 +357,9 @@ $text['label-tier_position']['pt-br'] = "Nivel da posição";
$text['label-tier_position']['pt-pt'] = "Posição do Tier";
$text['label-tier_position']['ro-ro'] = "Poziția nivelului";
$text['label-tier_position']['ru-ru'] = "Позиция компетенции";
$text['label-tier_position']['sv-se'] = "Kunskaps Position";
$text['label-tier_position']['sv-se'] = "Nivå Position";
$text['label-tier_position']['uk-ua'] = "Позиція рівня";
$text['label-tier_position']['tr-tr'] = "Seviye Konumu";
$text['label-tier_position']['zh-cn'] = "等级位置";
$text['label-tier_position']['ja-jp'] = "ティアの位置";
$text['label-tier_position']['ko-kr'] = "계층 위치";
@@ -342,6 +370,7 @@ $text['label-tier_level']['ar-eg'] = "مستوى الطبقة";
$text['label-tier_level']['de-at'] = "Ebenen-Niveau";
$text['label-tier_level']['de-ch'] = "Ebenen-Niveau";
$text['label-tier_level']['de-de'] = "Ebenen-Niveau";
$text['label-tier_level']['el-gr'] = "Επίπεδο Βαθμίδας";
$text['label-tier_level']['es-cl'] = "Nivel";
$text['label-tier_level']['es-mx'] = "Nivel";
$text['label-tier_level']['fr-ca'] = "Niveau";
@@ -354,8 +383,9 @@ $text['label-tier_level']['pt-br'] = "Nivel da camada";
$text['label-tier_level']['pt-pt'] = "Nível do Tier";
$text['label-tier_level']['ro-ro'] = "Nivelul de nivel";
$text['label-tier_level']['ru-ru'] = "Уровень компетенции";
$text['label-tier_level']['sv-se'] = "Kunskaps Nivå";
$text['label-tier_level']['sv-se'] = "Nivå";
$text['label-tier_level']['uk-ua'] = "Рівень рівня";
$text['label-tier_level']['tr-tr'] = "Seviye Seviyesi";
$text['label-tier_level']['zh-cn'] = "层级";
$text['label-tier_level']['ja-jp'] = "ティアレベル";
$text['label-tier_level']['ko-kr'] = "계층 수준";
@@ -366,6 +396,7 @@ $text['label-system']['ar-eg'] = "النظام";
$text['label-system']['de-at'] = "System";
$text['label-system']['de-ch'] = "System";
$text['label-system']['de-de'] = "System";
$text['label-system']['el-gr'] = "Σύστημα";
$text['label-system']['es-cl'] = "Sistema";
$text['label-system']['es-mx'] = "Sistema";
$text['label-system']['fr-ca'] = "Système";
@@ -380,6 +411,7 @@ $text['label-system']['ro-ro'] = "Sistem";
$text['label-system']['ru-ru'] = "Система";
$text['label-system']['sv-se'] = "System";
$text['label-system']['uk-ua'] = "система";
$text['label-system']['tr-tr'] = "Sistem";
$text['label-system']['zh-cn'] = "系统";
$text['label-system']['ja-jp'] = "システム";
$text['label-system']['ko-kr'] = "체계";
@@ -390,6 +422,7 @@ $text['label-strategy']['ar-eg'] = "إستراتيجية";
$text['label-strategy']['de-at'] = "Strategie";
$text['label-strategy']['de-ch'] = "Strategie";
$text['label-strategy']['de-de'] = "Strategie";
$text['label-strategy']['el-gr'] = "Στρατηγική";
$text['label-strategy']['es-cl'] = "Estrategia";
$text['label-strategy']['es-mx'] = "Estrategia";
$text['label-strategy']['fr-ca'] = "Stratégie";
@@ -404,16 +437,44 @@ $text['label-strategy']['ro-ro'] = "Strategie";
$text['label-strategy']['ru-ru'] = "Стратегия";
$text['label-strategy']['sv-se'] = "Strategi";
$text['label-strategy']['uk-ua'] = "Стратегія";
$text['label-strategy']['tr-tr'] = "Strateji";
$text['label-strategy']['zh-cn'] = "战略";
$text['label-strategy']['ja-jp'] = "ストラテジー";
$text['label-strategy']['ko-kr'] = "전략";
$text['label-last_bridge_end']['en-us'] = "Last Call";
$text['label-last_bridge_end']['en-gb'] = "Last Call";
$text['label-last_bridge_end']['ar-eg'] = "آخر مكالمة";
$text['label-last_bridge_end']['de-at'] = "Letzter Aufruf";
$text['label-last_bridge_end']['de-ch'] = "Letzter Aufruf";
$text['label-last_bridge_end']['de-de'] = "Letzter Aufruf";
$text['label-last_bridge_end']['el-gr'] = "Τελευταία κλήση";
$text['label-last_bridge_end']['es-cl'] = "Última llamada";
$text['label-last_bridge_end']['es-mx'] = "Última llamada";
$text['label-last_bridge_end']['fr-ca'] = "Dernier appel";
$text['label-last_bridge_end']['fr-fr'] = "Dernier appel";
$text['label-last_bridge_end']['he-il'] = "השיחה האחרונה";
$text['label-last_bridge_end']['it-it'] = "Ultima chiamata";
$text['label-last_bridge_end']['nl-nl'] = "Laatste oproep";
$text['label-last_bridge_end']['pl-pl'] = "Ostatnie połączenie";
$text['label-last_bridge_end']['pt-br'] = "Última chamada";
$text['label-last_bridge_end']['pt-pt'] = "Última chamada";
$text['label-last_bridge_end']['ro-ro'] = "Ultimul apel";
$text['label-last_bridge_end']['ru-ru'] = "Последний звонок";
$text['label-last_bridge_end']['sv-se'] = "Sista chansen";
$text['label-last_bridge_end']['uk-ua'] = "Останній дзвінок";
$text['label-last_bridge_end']['tr-tr'] = "Son çağrı";
$text['label-last_bridge_end']['zh-cn'] = "最后一次通话";
$text['label-last_bridge_end']['ja-jp'] = "ラスト・オーダー";
$text['label-last_bridge_end']['ko-kr'] = "마지막 호출";
$text['label-status_change']['en-us'] = "Status Change";
$text['label-status_change']['en-gb'] = "Status Change";
$text['label-status_change']['ar-eg'] = "تغيير الوضع";
$text['label-status_change']['de-at'] = "Status Änderung";
$text['label-status_change']['de-ch'] = "Status Änderung";
$text['label-status_change']['de-de'] = "Status Änderung";
$text['label-status_change']['el-gr'] = "Αλλαγή Κατάστασης";
$text['label-status_change']['es-cl'] = "Cambio de Estado";
$text['label-status_change']['es-mx'] = "Cambio de Estado";
$text['label-status_change']['fr-ca'] = "Change Status";
@@ -426,8 +487,9 @@ $text['label-status_change']['pt-br'] = "Mudança de estado";
$text['label-status_change']['pt-pt'] = "Mundança de Estado";
$text['label-status_change']['ro-ro'] = "Schimbare de stare";
$text['label-status_change']['ru-ru'] = "Изменения статуса";
$text['label-status_change']['sv-se'] = "Status Förändra";
$text['label-status_change']['sv-se'] = "Status Ändrad";
$text['label-status_change']['uk-ua'] = "Зміна статусу";
$text['label-status_change']['tr-tr'] = "Durum değişikliği";
$text['label-status_change']['zh-cn'] = "状态改变";
$text['label-status_change']['ja-jp'] = "ステータス変更";
$text['label-status_change']['ko-kr'] = "상태 변경";
@@ -438,6 +500,7 @@ $text['label-status']['ar-eg'] = "الحالة";
$text['label-status']['de-at'] = "Status";
$text['label-status']['de-ch'] = "Status";
$text['label-status']['de-de'] = "Status";
$text['label-status']['el-gr'] = "Κατάσταση";
$text['label-status']['es-cl'] = "Estado";
$text['label-status']['es-mx'] = "Estado";
$text['label-status']['fr-ca'] = "Statut";
@@ -452,6 +515,7 @@ $text['label-status']['ro-ro'] = "stare";
$text['label-status']['ru-ru'] = "Статус";
$text['label-status']['sv-se'] = "Status";
$text['label-status']['uk-ua'] = "Статус";
$text['label-status']['tr-tr'] = "Durum";
$text['label-status']['zh-cn'] = "地位";
$text['label-status']['ja-jp'] = "スターテス";
$text['label-status']['ko-kr'] = "상태";
@@ -462,6 +526,7 @@ $text['description-status']['ar-eg'] = 'تم تسجيل الخروج - لا يم
$text['description-status']['de-ch'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['de-at'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['de-de'] = "Abgemeldet – Warteschlangenanrufe können nicht empfangen werden.\nVerfügbar – Bereit zum Empfangen von Warteschlangenanrufen.\nVerfügbar (auf Abruf) – Der Status wird auf „Leer“ gesetzt, sobald der Anruf beendet ist (nicht automatisch auf „Wartend“).\nBei Pause – Sie sind immer noch angemeldet, erhalten aber keine Anrufe aus der Warteschlange.";
$text['description-status']['el-gr'] = "Αποσύνδεση - Δεν είναι δυνατή η λήψη κλήσεων στην ουρά.\nΔιαθέσιμο - Έτοιμη για λήψη κλήσεων στην ουρά.\nΔιαθέσιμο (κατ' απαίτηση) - Η κατάσταση θα οριστεί σε 'Αδράνεια' μόλις λήξει η κλήση (δεν ορίζεται αυτόματα σε 'Αναμονή').\nΣε διάλειμμα - Είναι ακόμα συνδεδεμένος, αλλά δεν θα λαμβάνει κλήσεις στην ουρά.";
$text['description-status']['es-cl'] = "Desconectado: no se pueden recibir llamadas en cola.\nDisponible: listo para recibir llamadas en cola.\nDisponible (bajo demanda): el estado se establecerá en 'Inactivo' una vez que finalice la llamada (no se establecerá automáticamente en 'Esperando').\nEn pausa: Sigue conectado, pero no recibirá llamadas en cola.";
$text['description-status']['es-mx'] = "Desconectado: no se pueden recibir llamadas en cola.\nDisponible: listo para recibir llamadas en cola.\nDisponible (bajo demanda): el estado se establecerá en 'Inactivo' una vez que finalice la llamada (no se establecerá automáticamente en 'Esperando').\nEn pausa: Sigue conectado, pero no recibirá llamadas en cola.";
$text['description-status']['fr-ca'] = "Déconnecté - Impossible de recevoir les appels de la file d'attente.\nDisponible - Prêt à recevoir les appels de la file d'attente.\nDisponible (à la demande) - L'état sera défini sur 'Inactif' une fois l'appel terminé (pas automatiquement défini sur 'En attente').\nSur pause - Toujours connecté, mais ne recevra pas les appels de la file d'attente.";
@@ -476,6 +541,7 @@ $text['description-status']['ro-ro'] = "Deconectat - Nu se pot primi apeluri în
$text['description-status']['ru-ru'] = "Вышел из системы — не может принимать вызовы из очереди.\nДоступно — готово принимать вызовы из очереди.\nДоступно (по требованию) — состояние будет установлено на «Неактивный» после завершения вызова (автоматически не устанавливается на «Ожидание»).\nВ перерыве — Все еще вошел в систему, но не будет принимать вызовы из очереди.";
$text['description-status']['sv-se'] = "Utloggad - Kan inte ta emot kösamtal.\nTillgänglig - Klar att ta emot kösamtal.\nTillgänglig (på begäran) - Status kommer att ställas in på 'Idle' när samtalet avslutas (inte automatiskt inställt på 'Väntar').\nPå paus - Fortfarande inloggad, men tar inte emot kösamtal.";
$text['description-status']['uk-ua'] = "Вийшов із системи – неможливо отримати виклики в черзі.\nДоступно – готовий приймати виклики в черзі.\nДоступно (на вимогу) – стан буде встановлено на «Неактивний» після завершення виклику (не автоматично встановлено на «Очікування»).\nНа перерві – Ви все ще ввійшли, але не отримуватимете викликів із черги.";
$text['description-status']['tr-tr'] = "Oturum Kapatıldı - Sıradaki çağrılar alınamıyor.\nKullanılabilir - Sıradaki çağrıları almaya hazır.\nKullanılabilir (İstek Üzerine) - Çağrı sona erdiğinde durum 'Boşta' olarak ayarlanacaktır (otomatik olarak 'Bekleme' olarak ayarlanmaz).\nArada - Hala Oturum açmış durumdasınız ancak sıradaki çağrıları alamayacaksınız.";
$text['description-status']['zh-cn'] = "已注销 - 无法接收队列呼叫。\n可用 - 准备好接收队列呼叫。\n可用(按需) - 一旦呼叫结束,状态将设置为“空闲”(不会自动设置为“等待”)。\n中断时 - 仍处于登录状态,但不会接收队列呼叫。";
$text['description-status']['ja-jp'] = "ログアウト - キュー コールを受信できません。\n利用可能 - キュー コールを受信する準備ができています。\n利用可能 (オンデマンド) - 通話が終了すると、状態は「アイドル」に設定されます (自動的に「待機中」には設定されません)。\n休憩中 - まだログインしていますが、キュー呼び出しを受信しません。";
$text['description-status']['ko-kr'] = "로그아웃됨 - 대기열 호출을 받을 수 없습니다.\n사용 가능 - 대기열 호출을 받을 준비가 되었습니다.\n사용 가능(요청 시) - 통화가 종료되면 상태가 '유휴'로 설정됩니다('대기 중'으로 자동 설정되지 않음).\n휴식 중 - 여전히 로그인되어 있지만 대기열 통화를 받지 않습니다.";
@@ -486,6 +552,7 @@ $text['label-state']['ar-eg'] = "ولاية";
$text['label-state']['de-at'] = "Zustand";
$text['label-state']['de-ch'] = "Zustand";
$text['label-state']['de-de'] = "Zustand";
$text['label-state']['el-gr'] = "κατάσταση";
$text['label-state']['es-cl'] = "Estado";
$text['label-state']['es-mx'] = "Estado";
$text['label-state']['fr-ca'] = "Etat";
@@ -498,8 +565,9 @@ $text['label-state']['pt-br'] = "Estado";
$text['label-state']['pt-pt'] = "Estado";
$text['label-state']['ro-ro'] = "Stat";
$text['label-state']['ru-ru'] = "Состояние";
$text['label-state']['sv-se'] = "stat";
$text['label-state']['sv-se'] = "Tillstånd";
$text['label-state']['uk-ua'] = "Держава";
$text['label-state']['tr-tr'] = "Durum";
$text['label-state']['zh-cn'] = "状态";
$text['label-state']['ja-jp'] = "州";
$text['label-state']['ko-kr'] = "상태";
@@ -510,6 +578,7 @@ $text['description-state']['ar-eg'] = "خامل - لا يفعل شيئًا ، ل
$text['description-state']['de-at'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['de-ch'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['de-de'] = "Inaktiv – Tut nichts, es werden keine Anrufe getätigt.\nWartend – Bereit zum Empfangen von Anrufen.\nEmpfangen – Dem Agenten wird derzeit ein Warteschlangenanruf angeboten.\nIn einem Warteschlangenanruf – Derzeit in einem Warteschlangenanruf.";
$text['description-state']['el-gr'] = "Αδράνεια - Δεν κάνει τίποτα, δεν γίνονται κλήσεις.\nΑναμονή - Έτοιμη για λήψη κλήσεων.\nΛήψη - Μια κλήση ουράς προσφέρεται αυτήν τη στιγμή στον πράκτορα.\nΣε μια κλήση ουράς - Αυτήν τη στιγμή βρίσκεται σε μια κλήση ουράς.";
$text['description-state']['es-cl'] = "Inactivo: no hace nada, no se dan llamadas.\nEsperando: listo para recibir llamadas.\nRecibiendo: actualmente se está ofreciendo una llamada en cola al agente.\nEn una llamada en cola: actualmente en una llamada en cola.";
$text['description-state']['es-mx'] = "Inactivo: no hace nada, no se dan llamadas.\nEsperando: listo para recibir llamadas.\nRecibiendo: actualmente se está ofreciendo una llamada en cola al agente.\nEn una llamada en cola: actualmente en una llamada en cola.";
$text['description-state']['fr-ca'] = "Inactif : ne fait rien, aucun appel n'est émis.\nEn attente : prêt à recevoir des appels.\nRéception : un appel de file d'attente est actuellement proposé à l'agent.\nDans un appel de file d'attente : actuellement en cours d'appel.";
@@ -524,6 +593,7 @@ $text['description-state']['ro-ro'] = "Inactiv - Nu face nimic, nu se dau apelur
$text['description-state']['ru-ru'] = "Бездействие — ничего не делает, вызовы не поступают.\nОжидание — готов к приему вызовов.\nПрием — вызов в очереди в данный момент предлагается агенту.\nВ вызове в очереди — вызов в данный момент в очереди.";
$text['description-state']['sv-se'] = "Inaktiv - Gör ingenting, inga samtal ges.\nVäntar - Redo att ta emot samtal.\nTar emot - Ett kösamtal erbjuds just nu till agenten.\nI ett kösamtal - För närvarande i ett kösamtal.";
$text['description-state']['uk-ua'] = "Неактивний – нічого не робить, виклики не надходять.\nОчікування – готовий приймати виклики.\nОтримання – агенту наразі пропонується виклик із черги.\nВиклик із черги – наразі виклик із черги.";
$text['description-state']['tr-tr'] = "Idle - Does nothing, no calls are given.\nWaiting - Ready to receive calls.\nReceiving - A queue call is currently being offered to the agent.\nIn a queue call - Currently on a queue call.";
$text['description-state']['zh-cn'] = "空闲 - 不执行任何操作,不会发出任何呼叫。\n等待 - 准备好接收呼叫。\n正在接收 - 当前正在向客服人员提供队列呼叫。\n队列呼叫中 - 当前正在进行队列呼叫。";
$text['description-state']['ja-jp'] = "アイドル - 何もせず、通話は行われません。\n待機中 - 通話を受信する準備ができています。\n受信中 - 現在エージェントにキュー コールが提供されています。\nキュー コール中 - 現在キュー コール中です。";
$text['description-state']['ko-kr'] = "유휴 - 아무것도 하지 않고 통화가 제공되지 않습니다.\n대기 중 - 전화를 받을 준비가 되었습니다.\n수신 중 - 현재 상담원에게 대기열 통화가 제공되고 있습니다.\n대기열 통화 중 - 현재 대기열 통화 중입니다.";
@@ -534,6 +604,7 @@ $text['label-record_template']['ar-eg'] = "قالب التسجيل";
$text['label-record_template']['de-at'] = "Aufnahme Vorlage";
$text['label-record_template']['de-ch'] = "Aufnahme Vorlage";
$text['label-record_template']['de-de'] = "Aufnahme Vorlage";
$text['label-record_template']['el-gr'] = "Πρότυπο εγγραφής";
$text['label-record_template']['es-cl'] = "Plantilla de Grabación";
$text['label-record_template']['es-mx'] = "Plantilla de Grabación";
$text['label-record_template']['fr-ca'] = "Modèle d'enregistrement";
@@ -548,6 +619,7 @@ $text['label-record_template']['ro-ro'] = "Șablon de înregistrare";
$text['label-record_template']['ru-ru'] = "Шаблон записи";
$text['label-record_template']['sv-se'] = "Spela In Mall";
$text['label-record_template']['uk-ua'] = "Шаблон запису";
$text['label-record_template']['tr-tr'] = "Kayıt Şablonu";
$text['label-record_template']['zh-cn'] = "记录模板";
$text['label-record_template']['ja-jp'] = "記録テンプレート";
$text['label-record_template']['ko-kr'] = "레코드 템플릿";
@@ -558,6 +630,7 @@ $text['label-queue_name']['ar-eg'] = "اسم الطابور";
$text['label-queue_name']['de-at'] = "Warteschlange Name";
$text['label-queue_name']['de-ch'] = "Warteschlange Name";
$text['label-queue_name']['de-de'] = "Warteschlange Name";
$text['label-queue_name']['el-gr'] = "Όνομα ουράς";
$text['label-queue_name']['es-cl'] = "Nombre de Cola";
$text['label-queue_name']['es-mx'] = "Nombre de Cola";
$text['label-queue_name']['fr-ca'] = " Nom de la file";
@@ -572,6 +645,7 @@ $text['label-queue_name']['ro-ro'] = "Nume coadă";
$text['label-queue_name']['ru-ru'] = "Имя очереди";
$text['label-queue_name']['sv-se'] = "Grupp Namn";
$text['label-queue_name']['uk-ua'] = "Назва черги";
$text['label-queue_name']['tr-tr'] = "Sıra Adı";
$text['label-queue_name']['zh-cn'] = "队列名称";
$text['label-queue_name']['ja-jp'] = "キュー名";
$text['label-queue_name']['ko-kr'] = "대기열 이름";
@@ -582,6 +656,7 @@ $text['label-queue']['ar-eg'] = "طابور";
$text['label-queue']['de-at'] = "Warteschlange";
$text['label-queue']['de-ch'] = "Warteschlange";
$text['label-queue']['de-de'] = "Warteschlange";
$text['label-queue']['el-gr'] = "Ουρά";
$text['label-queue']['es-cl'] = "Cola";
$text['label-queue']['es-mx'] = "Cola";
$text['label-queue']['fr-ca'] = "File";
@@ -596,6 +671,7 @@ $text['label-queue']['ro-ro'] = "Coadă";
$text['label-queue']['ru-ru'] = "Очередь";
$text['label-queue']['sv-se'] = "Grupp";
$text['label-queue']['uk-ua'] = "Черга";
$text['label-queue']['tr-tr'] = "Sıra";
$text['label-queue']['zh-cn'] = "队列";
$text['label-queue']['ja-jp'] = "列";
$text['label-queue']['ko-kr'] = "대기줄";
@@ -606,6 +682,7 @@ $text['label-options']['ar-eg'] = "خيارات";
$text['label-options']['de-at'] = "Optionen";
$text['label-options']['de-ch'] = "Optionen";
$text['label-options']['de-de'] = "Optionen";
$text['label-options']['el-gr'] = "Επιλογές";
$text['label-options']['es-cl'] = "Opciones";
$text['label-options']['es-mx'] = "Opciones";
$text['label-options']['fr-ca'] = "Choix";
@@ -620,6 +697,7 @@ $text['label-options']['ro-ro'] = "Opțiuni";
$text['label-options']['ru-ru'] = "Параметры";
$text['label-options']['sv-se'] = "Val";
$text['label-options']['uk-ua'] = "Опції";
$text['label-options']['tr-tr'] = "Seçenekler";
$text['label-options']['zh-cn'] = "选项";
$text['label-options']['ja-jp'] = "オプション";
$text['label-options']['ko-kr'] = "옵션";
@@ -630,6 +708,7 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Number";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
@@ -644,6 +723,7 @@ $text['label-number']['ro-ro'] = "Număr";
$text['label-number']['ru-ru'] = "Номер";
$text['label-number']['sv-se'] = "Nummer";
$text['label-number']['uk-ua'] = "Номер";
$text['label-number']['tr-tr'] = "Sayı";
$text['label-number']['zh-cn'] = "数字";
$text['label-number']['ja-jp'] = "番号";
$text['label-number']['ko-kr'] = "숫자";
@@ -654,6 +734,7 @@ $text['label-music_on_hold']['ar-eg'] = "الموسيقى في الانتظار"
$text['label-music_on_hold']['de-at'] = "Wartemusik";
$text['label-music_on_hold']['de-ch'] = "Wartemusik";
$text['label-music_on_hold']['de-de'] = "Wartemusik";
$text['label-music_on_hold']['el-gr'] = "Μουσική σε αναμονή";
$text['label-music_on_hold']['es-cl'] = "Musica en Espera";
$text['label-music_on_hold']['es-mx'] = "Musica en Espera";
$text['label-music_on_hold']['fr-ca'] = "Musique en attente";
@@ -668,6 +749,7 @@ $text['label-music_on_hold']['ro-ro'] = "Muzică în așteptare";
$text['label-music_on_hold']['ru-ru'] = "Музыка на удержании";
$text['label-music_on_hold']['sv-se'] = "Väntmusik";
$text['label-music_on_hold']['uk-ua'] = "Музика на утриманні";
$text['label-music_on_hold']['tr-tr'] = "Beklemedeki Müzik";
$text['label-music_on_hold']['zh-cn'] = "保留音乐";
$text['label-music_on_hold']['ja-jp'] = "保留音";
$text['label-music_on_hold']['ko-kr'] = "음악 보류";
@@ -678,6 +760,7 @@ $text['label-missed']['ar-eg'] = "مٌفتَقد";
$text['label-missed']['de-at'] = "Verpasst";
$text['label-missed']['de-ch'] = "Verpasst";
$text['label-missed']['de-de'] = "Verpasst";
$text['label-missed']['el-gr'] = "Αναπάντητες";
$text['label-missed']['es-cl'] = "Perdido";
$text['label-missed']['es-mx'] = "Perdido";
$text['label-missed']['fr-ca'] = "Manqué";
@@ -692,6 +775,7 @@ $text['label-missed']['ro-ro'] = "ratat";
$text['label-missed']['ru-ru'] = "Пропущенный";
$text['label-missed']['sv-se'] = "Missade";
$text['label-missed']['uk-ua'] = "Пропущений";
$text['label-missed']['tr-tr'] = "Kaçırıldı";
$text['label-missed']['zh-cn'] = "错过了";
$text['label-missed']['ja-jp'] = "逃した";
$text['label-missed']['ko-kr'] = "놓친";
@@ -702,6 +786,7 @@ $text['label-max_wait_time_with_no_agent']['ar-eg'] = "أقصى وقت انتظ
$text['label-max_wait_time_with_no_agent']['de-at'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['de-ch'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['de-de'] = "Maximale Wartezeit ohne Agent";
$text['label-max_wait_time_with_no_agent']['el-gr'] = "Μέγιστος χρόνος αναμονής χωρίς αντιπρόσωπο";
$text['label-max_wait_time_with_no_agent']['es-cl'] = "Tiempo Máximo de Espera sin Agente";
$text['label-max_wait_time_with_no_agent']['es-mx'] = "Tiempo Máximo de Espera sin Agente";
$text['label-max_wait_time_with_no_agent']['fr-ca'] = "Max d'attente sans Agent";
@@ -716,6 +801,7 @@ $text['label-max_wait_time_with_no_agent']['ro-ro'] = "Timp maxim de așteptare
$text['label-max_wait_time_with_no_agent']['ru-ru'] = "Максимальное время ожидания без оператора";
$text['label-max_wait_time_with_no_agent']['sv-se'] = "Max Vänt Tid (Ingen Agent)";
$text['label-max_wait_time_with_no_agent']['uk-ua'] = "Максимальний час очікування без агента";
$text['label-max_wait_time_with_no_agent']['tr-tr'] = "Temsilci Olmadan Maksimum Bekleme Süresi";
$text['label-max_wait_time_with_no_agent']['zh-cn'] = "无代理的最长等待时间";
$text['label-max_wait_time_with_no_agent']['ja-jp'] = "エージェントなしの最大待機時間";
$text['label-max_wait_time_with_no_agent']['ko-kr'] = "에이전트 없는 최대 대기 시간";
@@ -726,6 +812,7 @@ $text['label-max_wait_time']['ar-eg'] = "وقت الانتظار الأقصى";
$text['label-max_wait_time']['de-at'] = "Maximale Wartezeit";
$text['label-max_wait_time']['de-ch'] = "Maximale Wartezeit";
$text['label-max_wait_time']['de-de'] = "Maximale Wartezeit";
$text['label-max_wait_time']['el-gr'] = "Μέγιστος χρόνος αναμονής";
$text['label-max_wait_time']['es-cl'] = "Tiempo Máximo de Espera";
$text['label-max_wait_time']['es-mx'] = "Tiempo Máximo de Espera";
$text['label-max_wait_time']['fr-ca'] = "Temps d'attente maximal";
@@ -740,6 +827,7 @@ $text['label-max_wait_time']['ro-ro'] = "Timp maxim de așteptare";
$text['label-max_wait_time']['ru-ru'] = "Максимальное время ожидания";
$text['label-max_wait_time']['sv-se'] = "Max Vänt Tid";
$text['label-max_wait_time']['uk-ua'] = "Максимальний час очікування";
$text['label-max_wait_time']['tr-tr'] = "Maksimum Bekleme Süresi";
$text['label-max_wait_time']['zh-cn'] = "最长等待时间";
$text['label-max_wait_time']['ja-jp'] = "最大待ち時間";
$text['label-max_wait_time']['ko-kr'] = "최대 대기 시간";
@@ -750,6 +838,7 @@ $text['label-extension']['ar-eg'] = "رقم داخلي";
$text['label-extension']['de-at'] = "Nebenstelle";
$text['label-extension']['de-ch'] = "Nebenstelle";
$text['label-extension']['de-de'] = "Nebenstelle";
$text['label-extension']['el-gr'] = "Επέκταση";
$text['label-extension']['es-cl'] = "Extensión";
$text['label-extension']['es-mx'] = "Extensión";
$text['label-extension']['fr-ca'] = "Extension";
@@ -764,6 +853,7 @@ $text['label-extension']['ro-ro'] = "Extensie";
$text['label-extension']['ru-ru'] = "Внутренний номер";
$text['label-extension']['sv-se'] = "Anknytning";
$text['label-extension']['uk-ua'] = "Розширення";
$text['label-extension']['tr-tr'] = "Eklenti";
$text['label-extension']['zh-cn'] = "扩大";
$text['label-extension']['ja-jp'] = "拡大";
$text['label-extension']['ko-kr'] = "확대";
@@ -774,6 +864,7 @@ $text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionnage";
@@ -788,6 +879,7 @@ $text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
$text['label-eavesdrop']['ru-ru'] = "Подслушать";
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
$text['label-eavesdrop']['uk-ua'] = "Підслуховувати";
$text['label-eavesdrop']['tr-tr'] = "Kulak misafiri olmak";
$text['label-eavesdrop']['zh-cn'] = "窃听";
$text['label-eavesdrop']['ja-jp'] = "盗聴";
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
@@ -798,6 +890,7 @@ $text['label-discard_abandoned_after']['ar-eg'] = "تجاهل المهجورة
$text['label-discard_abandoned_after']['de-at'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['de-ch'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['de-de'] = "Zurückweisen nach Abwurf";
$text['label-discard_abandoned_after']['el-gr'] = "Απορρίψτε το Εγκαταλελειμμένο Μετά";
$text['label-discard_abandoned_after']['es-cl'] = "Descartar Abandono Despues de";
$text['label-discard_abandoned_after']['es-mx'] = "Descartar Abandono Despues de";
$text['label-discard_abandoned_after']['fr-ca'] = "Ecarter les appels abandonnés après";
@@ -812,6 +905,7 @@ $text['label-discard_abandoned_after']['ro-ro'] = "Aruncă abandonat după";
$text['label-discard_abandoned_after']['ru-ru'] = "Сбросить вызов после покидания очереди";
$text['label-discard_abandoned_after']['sv-se'] = "Uteslut Övergivna Efter ";
$text['label-discard_abandoned_after']['uk-ua'] = "Відкинути покинуте після";
$text['label-discard_abandoned_after']['tr-tr'] = "Daha Sonra Terk Edilenleri At";
$text['label-discard_abandoned_after']['zh-cn'] = "放弃后放弃";
$text['label-discard_abandoned_after']['ja-jp'] = "次の後に放棄されたものを破棄";
$text['label-discard_abandoned_after']['ko-kr'] = "폐기 후 폐기";
@@ -822,6 +916,7 @@ $text['label-call']['ar-eg'] = "يتصل";
$text['label-call']['de-at'] = "Anruf";
$text['label-call']['de-ch'] = "Anruf";
$text['label-call']['de-de'] = "Anruf";
$text['label-call']['el-gr'] = "Κλήση";
$text['label-call']['es-cl'] = "Llamar";
$text['label-call']['es-mx'] = "Llamar";
$text['label-call']['fr-ca'] = "Appel";
@@ -836,6 +931,7 @@ $text['label-call']['ro-ro'] = "Apel";
$text['label-call']['ru-ru'] = "Вызов";
$text['label-call']['sv-se'] = "Samtal";
$text['label-call']['uk-ua'] = "Телефонуйте";
$text['label-call']['tr-tr'] = "Arama";
$text['label-call']['zh-cn'] = "称呼";
$text['label-call']['ja-jp'] = "電話";
$text['label-call']['ko-kr'] = "부르다";
@@ -846,6 +942,7 @@ $text['label-answered']['ar-eg'] = "أجاب";
$text['label-answered']['de-at'] = "Angenommen";
$text['label-answered']['de-ch'] = "Angenommen";
$text['label-answered']['de-de'] = "Angenommen";
$text['label-answered']['el-gr'] = "Απάντησε";
$text['label-answered']['es-cl'] = "Respondido";
$text['label-answered']['es-mx'] = "Respondido";
$text['label-answered']['fr-ca'] = "Répondu";
@@ -860,6 +957,7 @@ $text['label-answered']['ro-ro'] = "Răspuns";
$text['label-answered']['ru-ru'] = "Отвеченый";
$text['label-answered']['sv-se'] = "Besvarad";
$text['label-answered']['uk-ua'] = "відповів";
$text['label-answered']['tr-tr'] = "Yanıtlandı";
$text['label-answered']['zh-cn'] = "已回答";
$text['label-answered']['ja-jp'] = "回答済み";
$text['label-answered']['ko-kr'] = "대답했다";
@@ -870,6 +968,7 @@ $text['label-agent']['ar-eg'] = "عامل";
$text['label-agent']['de-at'] = "Agent";
$text['label-agent']['de-ch'] = "Agent";
$text['label-agent']['de-de'] = "Agent";
$text['label-agent']['el-gr'] = "Μέσο";
$text['label-agent']['es-cl'] = "Agente";
$text['label-agent']['es-mx'] = "Agente";
$text['label-agent']['fr-ca'] = "Agent";
@@ -884,6 +983,7 @@ $text['label-agent']['ro-ro'] = "Agent";
$text['label-agent']['ru-ru'] = "Оператор";
$text['label-agent']['sv-se'] = "Agent";
$text['label-agent']['uk-ua'] = "Агент";
$text['label-agent']['tr-tr'] = "Ajan";
$text['label-agent']['zh-cn'] = "代理人";
$text['label-agent']['ja-jp'] = "エージェント";
$text['label-agent']['ko-kr'] = "대리인";
@@ -894,6 +994,7 @@ $text['label-abandoned_resume_allowed']['ar-eg'] = "استئناف مهجور م
$text['label-abandoned_resume_allowed']['de-at'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['de-ch'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['de-de'] = "Wiederaufnahme nach Zurückweisung erlaubt";
$text['label-abandoned_resume_allowed']['el-gr'] = "Επιτρέπεται το εγκαταλειμμένο βιογραφικό";
$text['label-abandoned_resume_allowed']['es-cl'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['es-mx'] = "Permitir Reanudación de Abandono";
$text['label-abandoned_resume_allowed']['fr-ca'] = "Authoriser la reprise des abandonnés";
@@ -908,6 +1009,7 @@ $text['label-abandoned_resume_allowed']['ro-ro'] = "CV-ul abandonat este permis"
$text['label-abandoned_resume_allowed']['ru-ru'] = "Разрешить восстанавливать покинутый вызов";
$text['label-abandoned_resume_allowed']['sv-se'] = "Återuppta Övergivna Tillåtet";
$text['label-abandoned_resume_allowed']['uk-ua'] = "Залишене резюме дозволено";
$text['label-abandoned_resume_allowed']['tr-tr'] = "Terk Edilmiş Özgeçmişe İzin Verildi";
$text['label-abandoned_resume_allowed']['zh-cn'] = "允许放弃简历";
$text['label-abandoned_resume_allowed']['ja-jp'] = "放棄された履歴書を許可";
$text['label-abandoned_resume_allowed']['ko-kr'] = "포기한 이력서 허용";
@@ -918,6 +1020,7 @@ $text['header-agents']['ar-eg'] = "عملاء";
$text['header-agents']['de-at'] = "Agenten";
$text['header-agents']['de-ch'] = "Agenten";
$text['header-agents']['de-de'] = "Agenten";
$text['header-agents']['el-gr'] = "Πράκτορες";
$text['header-agents']['es-cl'] = "Agentes";
$text['header-agents']['es-mx'] = "Agentes";
$text['header-agents']['fr-ca'] = "Agents";
@@ -932,6 +1035,7 @@ $text['header-agents']['ro-ro'] = "Agenți";
$text['header-agents']['ru-ru'] = "Операторы";
$text['header-agents']['sv-se'] = "Agenter";
$text['header-agents']['uk-ua'] = "Агенти";
$text['header-agents']['tr-tr'] = "Agents";
$text['header-agents']['zh-cn'] = "代理商";
$text['header-agents']['ja-jp'] = "エージェント";
$text['header-agents']['ko-kr'] = "자치령 대표";
@@ -942,6 +1046,7 @@ $text['header-active_call_center']['ar-eg'] = "مركز الاتصال النش
$text['header-active_call_center']['de-at'] = "Aktives Callcenter";
$text['header-active_call_center']['de-ch'] = "Aktives Callcenter";
$text['header-active_call_center']['de-de'] = "Aktives Callcenter";
$text['header-active_call_center']['el-gr'] = "Ενεργό τηλεφωνικό κέντρο";
$text['header-active_call_center']['es-cl'] = "Centro de Llamados Activo";
$text['header-active_call_center']['es-mx'] = "Centro de Llamados Activo";
$text['header-active_call_center']['fr-ca'] = "Centre d'appel Actif";
@@ -956,6 +1061,7 @@ $text['header-active_call_center']['ro-ro'] = "Centru de apeluri activ";
$text['header-active_call_center']['ru-ru'] = "Активный Колл-центр";
$text['header-active_call_center']['sv-se'] = "Aktivt Call Center";
$text['header-active_call_center']['uk-ua'] = "Активний Call Center";
$text['header-active_call_center']['tr-tr'] = "Aktif Çağrı Merkezi";
$text['header-active_call_center']['zh-cn'] = "主动呼叫中心";
$text['header-active_call_center']['ja-jp'] = "アクティブ コール センター";
$text['header-active_call_center']['ko-kr'] = "활성 콜 센터";
@@ -966,6 +1072,7 @@ $text['description-queue']['ar-eg'] = "القائمة الحالية للمتص
$text['description-queue']['de-at'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['de-ch'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['de-de'] = "Eine aktuelle Liste der Anrufer in der Warteschlange sehen sie unten.";
$text['description-queue']['el-gr'] = "Μια τρέχουσα λίστα καλούντων στην ουρά είναι παρακάτω.";
$text['description-queue']['es-cl'] = "Un listado de los llamantes en cola se muestra a continuación.";
$text['description-queue']['es-mx'] = "Un listado de los llamantes en cola se muestra a continuación.";
$text['description-queue']['fr-ca'] = "Liste des appelants dans la file.";
@@ -978,8 +1085,9 @@ $text['description-queue']['pt-br'] = "Lista atual das chamadas em fila abaixo."
$text['description-queue']['pt-pt'] = "Lista de chamadas na fila.";
$text['description-queue']['ro-ro'] = "O listă curentă a apelanților din coadă este mai jos.";
$text['description-queue']['ru-ru'] = "Текущий список звонящих в этой очереди ниже.";
$text['description-queue']['sv-se'] = "Aktuell lista på köande samtal enligt nedan ";
$text['description-queue']['sv-se'] = "Aktuell lista med samtal i kö";
$text['description-queue']['uk-ua'] = "Поточний список абонентів у черзі наведено нижче.";
$text['description-queue']['tr-tr'] = "Kuyruktaki arayanların güncel listesi aşağıdadır.";
$text['description-queue']['zh-cn'] = "队列中的当前呼叫者列表如下。";
$text['description-queue']['ja-jp'] = "キュー内の発信者の現在のリストは次のとおりです。";
$text['description-queue']['ko-kr'] = "대기열에 있는 현재 발신자 목록은 다음과 같습니다.";
@@ -990,6 +1098,7 @@ $text['description-agents']['ar-eg'] = "القائمة الحالية للوكل
$text['description-agents']['de-at'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['de-ch'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['de-de'] = "Eine aktuelle Liste der Agenten sehen sie unten.";
$text['description-agents']['el-gr'] = "Μια τρέχουσα λίστα πρακτόρων είναι παρακάτω.";
$text['description-agents']['es-cl'] = "Un listado de los agentes actuales de muestra a continuación.";
$text['description-agents']['es-mx'] = "Un listado de los agentes actuales de muestra a continuación.";
$text['description-agents']['fr-ca'] = "Liste des agents";
@@ -1002,8 +1111,9 @@ $text['description-agents']['pt-br'] = "Lista dos atuais agentes abaixo.";
$text['description-agents']['pt-pt'] = "Lista de agentes.";
$text['description-agents']['ro-ro'] = "O listă curentă a agenților este mai jos.";
$text['description-agents']['ru-ru'] = "Текущий список операторов ниже.";
$text['description-agents']['sv-se'] = "Aktuell lista på Agenter enligt nedan";
$text['description-agents']['sv-se'] = "Aktuell lista med Agenter";
$text['description-agents']['uk-ua'] = "Поточний список агентів наведено нижче.";
$text['description-agents']['tr-tr'] = "Güncel acente listesi aşağıdadır.";
$text['description-agents']['zh-cn'] = "当前的代理列表如下。";
$text['description-agents']['ja-jp'] = "現在のエージェントのリストは以下のとおりです。";
$text['description-agents']['ko-kr'] = "현재 에이전트 목록은 다음과 같습니다.";
@@ -1014,6 +1124,7 @@ $text['description-active_call_center']['ar-eg'] = "حدد قائمة انتظا
$text['description-active_call_center']['de-at'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['de-ch'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['de-de'] = "Wählen Sie eine Callcenter-Warteschlange aus der Liste unten um die Aktivität zu beobachten.";
$text['description-active_call_center']['el-gr'] = "Επιλέξτε μια ουρά τηλεφωνικού κέντρου από την παρακάτω λίστα για να δείτε τη δραστηριότητά της.";
$text['description-active_call_center']['es-cl'] = "Seleccione la Cola del Centro de Llamados desde el siguiente listado para ver su actividad.";
$text['description-active_call_center']['es-mx'] = "Seleccione la Cola del Centro de Llamados desde el siguiente listado para ver su actividad.";
$text['description-active_call_center']['fr-ca'] = "Choisir une file d'attente dans la liste pour voir son activité.";
@@ -1028,6 +1139,7 @@ $text['description-active_call_center']['ro-ro'] = "Selectați o coadă de call
$text['description-active_call_center']['ru-ru'] = "Выберите очередь Колл-центра из списка, чтобы посмотреть ее состояние";
$text['description-active_call_center']['sv-se'] = "Välj en Call Center Grupp från listan nedan för att se dess aktivitet";
$text['description-active_call_center']['uk-ua'] = "Виберіть чергу кол-центру зі списку нижче, щоб переглянути його активність.";
$text['description-active_call_center']['tr-tr'] = "Etkinliğini görüntülemek için aşağıdaki listeden bir Çağrı Merkezi Kuyruğu seçin.";
$text['description-active_call_center']['zh-cn'] = "从下面的列表中选择呼叫中心队列以查看其活动。";
$text['description-active_call_center']['ja-jp'] = "以下のリストからコール センター キューを選択して、そのアクティビティを表示します。";
$text['description-active_call_center']['ko-kr'] = "활동을 보려면 아래 목록에서 콜 센터 대기열을 선택하십시오.";
+32 -15
View File
@@ -85,36 +85,53 @@
loadXmlHttp.prototype.stateChanged=function () {
var url = new URL(this.xmlHttp.responseURL);
if (/login\.php$/.test(url.pathname)) {
// You are logged out. Stop refresh!
//logged out stop the refresh
if (/login\.php$/.test(url.pathname)) {
url.searchParams.set('path', '<?php echo $_SERVER['REQUEST_URI']; ?>');
window.location.href = url.href;
return;
}
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href))) {
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
}
//link table rows (except the last - the list_control_icons cell) on a table with a class of 'tr_hover', according to the href attribute of the <tr> tag
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
});
}
var requestTime = function() {
var url = 'call_center_active_inc.php?queue_name=<?php echo escape($queue_name); ?>&name=<?php echo urlencode(escape($name)); ?>';
new loadXmlHttp(url, 'ajax_response');
<?php
if (empty($_SESSION["ajax_refresh_rate"])) { $_SESSION["ajax_refresh_rate"] = "1777"; }
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$_SESSION["ajax_refresh_rate"].");";
//determine refresh rate
$refresh_default = 1500; //milliseconds
$refresh = is_numeric($_SESSION['call_center']['refresh']['numeric']) ? $_SESSION['call_center']['refresh']['numeric'] : $refresh_default;
if ($refresh >= 0.5 && $refresh <= 120) { //convert seconds to milliseconds
$refresh = $refresh * 1000;
}
else if ($refresh < 0.5 || ($refresh > 120 && $refresh < 500)) {
$refresh = $refresh_default; //use default
}
else {
//>= 500, must be milliseconds
}
//set the value for the refresh
echo "setInterval(function(){new loadXmlHttp(url, 'ajax_reponse');}, ".$refresh.");";
?>
}
@@ -148,4 +165,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2021
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -90,10 +90,10 @@
}
//create an event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the call center queue, agent and tiers list
if (!$fp) {
if (!$esl->is_connected()) {
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -117,7 +117,7 @@
//send the event socket command and get the response
//callcenter_config queue list tiers [queue_name] |
$switch_command = 'callcenter_config queue list tiers '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$result = str_to_named_array($event_socket_str, '|');
//prepare the result for array_multisort
@@ -139,7 +139,7 @@
//send the event socket command and get the response
//callcenter_config queue list agents [queue_name] [status] |
$switch_command = 'callcenter_config queue list agents '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$agent_result = str_to_named_array($event_socket_str, '|');
//get the agents from the database
@@ -160,6 +160,7 @@
echo "<th title=\"".$text['description-status']."\">".$text['label-status']."</th>\n";
echo "<th title=\"".$text['description-state']."\">".$text['label-state']."</th>\n";
echo "<th>".$text['label-status_change']."</th>\n";
echo "<th>".$text['label-last_bridge_end']."</th>\n";
echo "<th class='center'>".$text['label-missed']."</th>\n";
echo "<th class='center'>".$text['label-answered']."</th>\n";
echo "<th>".$text['label-tier_state']."</th>\n";
@@ -218,13 +219,9 @@
$talk_time = $agent_row['talk_time'];
$ready_time = $agent_row['ready_time'];
$last_status_change_seconds = time() - $last_status_change;
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
//format the seconds to hh:mm:ss
$last_status_change_length = format_seconds(time() - $last_status_change);
$last_bridge_end_length = format_seconds(time() - $last_bridge_end);
if (permission_exists('call_center_agent_edit')) {
$list_row_url = "../call_centers/call_center_agent_edit.php?id=".$agent_uuid;
@@ -243,6 +240,7 @@
echo "<td>".escape($status)."</td>\n";
echo "<td>".escape($state)."</td>\n";
echo "<td>".escape($last_status_change_length)."</td>\n";
echo "<td>".escape($last_bridge_end_length)."</td>\n";
echo "<td class='center'>".escape($no_answer_count)."</td>\n";
echo "<td class='center'>".escape($calls_answered)."</td>\n";
echo "<td>".escape($tier_state)."</td>\n";
@@ -280,7 +278,7 @@
//callcenter_config queue list members [queue_name]
if (is_uuid($queue_uuid)) {
$switch_command = 'callcenter_config queue list members '.$queue_extension."@".$_SESSION["domain_name"];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_command));
$event_socket_str = trim(event_socket::api($switch_command));
$result = str_to_named_array($event_socket_str, '|');
if (!is_array($result)) { unset($result); }
}
+5 -6
View File
@@ -90,8 +90,7 @@
//run the command
if (isset($switch_command)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$response = event_socket_request($fp, 'api '.$switch_command);
$response = event_socket::api($switch_command);
}
/*
@@ -134,14 +133,14 @@
//fs cmd
if (!empty($switch_cmd)) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//ensure the connection exists
if ($fp) {
if ($esl) {
//send the command
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
//set the user state
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
$response = event_socket::command($cmd);
}
}
}
+46 -18
View File
@@ -35,13 +35,15 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_centers";
$apps[$x]['destinations'][$y]['name'] = "call_centers";
$apps[$x]['destinations'][$y]['sql'] = "select queue_name as name, queue_extension as destination, queue_extension as extension, queue_description as description from v_call_center_queues";
$apps[$x]['destinations'][$y]['sql'] = "select call_center_queue_uuid, call_center_queue_uuid as uuid, queue_name as name, queue_extension as destination, ";
$apps[$x]['destinations'][$y]['sql'] .= "queue_extension as extension, queue_context as context, queue_description as description from v_call_center_queues ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' ";
$apps[$x]['destinations'][$y]['order_by'] = "queue_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(queue_extension) asc";
$apps[$x]['destinations'][$y]['field']['name'] = "queue_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "queue_extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "queue_extension";
$apps[$x]['destinations'][$y]['field']['description'] = "queue_description";
$apps[$x]['destinations'][$y]['field']['destination'] = "extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "extension";
$apps[$x]['destinations'][$y]['field']['description'] = "description";
$apps[$x]['destinations'][$y]['field']['context'] = "context";
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name} \${description}";
@@ -66,6 +68,9 @@
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_center_queue_context";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_center_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
@@ -181,6 +186,38 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "user";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: user (default)";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b8f8a95c-0167-4768-8aab-c386f64bdd06";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "refresh";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1500";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Set the refresh rate in seconds (<=120) or milliseconds (>=500).";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ca34cbc0-e071-432e-afd6-b587aa52bd85";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "queue_login";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "static";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Agent queue login options: dynamic, static";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1bdf7b53-356f-4a81-85de-eeed4d26b7c5";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "export_vars";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "array";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "hold_music";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Pass through hold_music variable.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f7ecaf4b-8228-4f15-9df1-c694a8259aab";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "record_name";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "\${sip_from_user}-\${sip_to_user}-\${strftime(%Y)}\${strftime(%b)}\${strftime(%d)}.\${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}";
//cache details
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
@@ -456,6 +493,10 @@
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_context";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "queue_description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
@@ -489,14 +530,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_call_center_tiers";
$apps[$x]['db'][$y]['table']['parent'] = "";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "call_center_tier_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_center_tier_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
@@ -532,11 +565,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "call_center_agent_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "agent_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+13 -2
View File
@@ -26,6 +26,17 @@
if ($domains_processed == 1) {
//add the domain_name as the context
$sql = "UPDATE v_call_center_queues as c ";
$sql .= "SET queue_context = ( ";
$sql .= " SELECT domain_name FROM v_domains as d ";
$sql .= " WHERE d.domain_uuid = c.domain_uuid ";
$sql .= ") ";
$sql .= "WHERE queue_context is null; ";
$database = new database;
$database->execute($sql);
unset($sql);
//list the missing call center queue and agent uuids
$sql = "select t.call_center_tier_uuid, t.call_center_queue_uuid, t.call_center_agent_uuid, t.queue_name, t.agent_name, d.domain_name, ";
$sql .= "(select call_center_queue_uuid from v_call_center_queues where replace(queue_name, ' ', '-') = t.queue_name and domain_uuid = t.domain_uuid) as queue_uuid, ";
@@ -86,8 +97,8 @@ if ($domains_processed == 1) {
//add the recording path if needed
if ($row['queue_greeting'] != '') {
if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
$queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$row['domain_name'].'/'.$row['queue_greeting'];
if (file_exists($setting->get('switch','recordings').'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
$queue_greeting_path = $setting->get('switch','recordings').'/'.$row['domain_name'].'/'.$row['queue_greeting'];
}
else {
$queue_greeting_path = trim($row['queue_greeting']);
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -4,18 +4,18 @@
$apps[$x]['menu'][$y]['title']['en-us'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['en-gb'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['ar-eg'] = "مراكز الاتصال";
$apps[$x]['menu'][$y]['title']['de-at'] = "Callcenter";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['de-de'] = "Callcenter";
$apps[$x]['menu'][$y]['title']['de-at'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['de-de'] = "Call-Center";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Centro de Llamadas";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Centre d' appels";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Centre d'appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Centers";
$apps[$x]['menu'][$y]['title']['he-il'] = "מוקדים טלפוניים";
$apps[$x]['menu'][$y]['title']['it-it'] = "Stato Agenti";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Call-Centers";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Call Center ";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Call Center";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Telefooncentrales";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Centra telefoniczne ";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Centros de chamada";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Centro de Chamadas";
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Centre de apeluri";
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Колл-центр";
+18 -18
View File
@@ -238,37 +238,37 @@
//add the agent
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//add the agent using event socket
if ($fp) {
if ($esl->connected()) {
//add the agent
$cmd = "api callcenter_config agent add ".$call_center_agent_uuid." ".$agent_type;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent add ".$call_center_agent_uuid." '".$agent_type."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set contact
$cmd = "api callcenter_config agent set contact ".$call_center_agent_uuid." ".$agent_contact;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent set contact ".$call_center_agent_uuid." '".$agent_contact."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set status
$cmd = "api callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
$response = event_socket::api($cmd);
usleep(200);
//agent set reject_delay_time
$cmd = "api callcenter_config agent set reject_delay_time ".$call_center_agent_uuid." ".$agent_reject_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set reject_delay_time '.$call_center_agent_uuid.' '. $agent_reject_delay_time;
$response = event_socket::api($cmd);
usleep(200);
//agent set busy_delay_time
$cmd = "api callcenter_config agent set busy_delay_time ".$call_center_agent_uuid." ".$agent_busy_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set busy_delay_time '.$call_center_agent_uuid.' '.$agent_busy_delay_time;
$response = event_socket::api($cmd);
//agent set no_answer_delay_time
$cmd = "api callcenter_config agent set no_answer_delay_time ".$call_center_agent_uuid." ".$agent_no_answer_delay_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set no_answer_delay_time '.$call_center_agent_uuid.' '.$agent_no_answer_delay_time;
$response = event_socket::api($cmd);
//agent set max_no_answer
$cmd = "api callcenter_config agent set max_no_answer ".$call_center_agent_uuid." ".$agent_max_no_answer;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set max_no_answer '.$call_center_agent_uuid.' '.$agent_max_no_answer;
$response = event_socket::api($cmd);
//agent set wrap_up_time
$cmd = "api callcenter_config agent set wrap_up_time ".$call_center_agent_uuid." ".$agent_wrap_up_time;
$response = event_socket_request($fp, $cmd);
$cmd = 'callcenter_config agent set wrap_up_time '.$call_center_agent_uuid.' '.$agent_wrap_up_time;
$response = event_socket::api($cmd);
}
//redirect the user
+33 -21
View File
@@ -48,7 +48,7 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$tiers = $database->select($sql, $parameters, 'all');
if (empty($tiers)) {
if (!empty($_SESSION['call_center']['queue_login']['text']) && $_SESSION['call_center']['queue_login']['text'] == 'dynamic') {
$per_queue_login = true;
}
else {
@@ -57,7 +57,7 @@
unset($sql, $parameters);
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the agents from the database
$sql = "select * from v_call_center_agents ";
@@ -70,12 +70,12 @@
//get the agent list from event socket
$switch_cmd = 'callcenter_config agent list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$agent_list = csv_to_named_array($event_socket_str, '|');
//get the agent list from event socket
$switch_cmd = 'callcenter_config tier list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
//get the call center queues from the database
@@ -100,7 +100,7 @@
//get the queue list from event socket
$switch_cmd = "callcenter_config queue list agents ".$queue_id;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$queue_list = csv_to_named_array($event_socket_str, '|');
$call_center_queues[$x]['queue_list'] = $queue_list;
$x++;
@@ -165,7 +165,7 @@
foreach($_POST['agents'] as $row) {
if (!empty($row['agent_status'])) {
//agent set status
if ($fp) {
if ($esl->is_connected()) {
//set the user_status
if (!isset($row['queue_name'])) {
$array['users'][0]['user_uuid'] = $row['user_uuid'] ?? null;
@@ -207,18 +207,28 @@
if (!isset($row['queue_name'])) {
if ($agent_status == "Do Not Disturb") {
//set the default dnd action
$dnd_action = "add";
$dnd_action = "add";
//set the call center status to Logged Out
if (is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
}
if (is_uuid($row['agent_uuid'])) {
$command = "callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
$response = event_socket::api($command);
}
}
else {
if (is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
//set the agent status
$command = "callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
$response = event_socket::api($command);
//set the agent state
if ($agent_status == 'Available' || $agent_status == 'Logged Out') {
$command = "callcenter_config agent set state ".$row['agent_uuid']." 'Waiting'";
$response = event_socket::api($command);
}
}
}
$response = event_socket_request($fp, $command);
}
//echo $command."\n";
@@ -237,22 +247,21 @@
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Available') {
//set the call center status
//$command = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'";
//$response = event_socket_request($fp, $command);
//$response = event_socket::command($command);
//assign the agent to the queue
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
//echo $command."<br />\n";
$response = event_socket_request($fp, $command);
$command = "callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
$response = event_socket::api($command);
}
}
//un-assign the agent from the queue
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Logged Out') {
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
$command = "api callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
$command = "callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
//echo $command."<br />\n";
$response = event_socket_request($fp, $command);
$response = event_socket::api($command);
}
}
usleep(200);
@@ -348,6 +357,7 @@
echo " <th class='pct-20 hide-sm-dn'>&nbsp;</th>\n";
if ($per_queue_login) {
echo " <th class='pct-40'>".$text['label-options']."</th>\n";
echo " <th class='pct-40' style='width=50%;'>&nbsp</th>\n";
}
echo "</tr>\n";
@@ -356,7 +366,7 @@
foreach ($agents as $row) {
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
$html = "<tr class='list-row'>\n";
$html .= " <td ".$onclick.">".escape($row['agent_name'])."&nbsp;</td>\n";
$html .= " <td style='vertical-align: top;' ".$onclick.">".escape($row['agent_name'])."&nbsp;</td>\n";
if (!$per_queue_login) {
$html .= " <td class='no-wrap'>";
@@ -371,7 +381,7 @@
$html .= " <td ".$onclick." class='hide-sm-dn'>&nbsp;</td>\n";
if ($per_queue_login) {
$html .= " <td class='description'>";
$html .= " <td class='description' style='width: 30%;'>";
if (!empty($row['queues'])) {
$html .= " <table class='list' >\n";
$html .= " <tr>\n";
@@ -400,7 +410,8 @@
$html .= " <input type='hidden' name='agents[".$x."][queue_uuid]' value='".escape($queue['call_center_queue_uuid'])."'>\n";
$html .= " <input type='hidden' name='agents[".$x."][agent_uuid]' value='".escape($row['call_center_agent_uuid'])."'>\n";
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($queue['queue_status'] == 'Available' ? "checked='checked'" : null).">&nbsp;".$text['option-available']."</label>&nbsp;\n";
$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($queue['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
$html .= " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($queue['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
//$html .= " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($queue['queue_status'] == 'On Break' ? "checked='checked'" : null).">&nbsp;".$text['option-on_break']."</label>\n";
$html .= " </td>\n";
$html .= " </tr>\n";
}
@@ -408,6 +419,7 @@
$html .= " </table>\n";
}
$html .= " </td>\n";
$html .= " <td>&nbsp;&nbsp;&nbsp;</td>\n";
}
$html .= "</tr>\n";
if (count($_SESSION['domains']) > 1) {
+252 -170
View File
@@ -116,6 +116,14 @@
$queue_email_address = $_POST["queue_email_address"] ?? null;
$queue_description = $_POST["queue_description"];
//set the context for users that do not have the permission
if (permission_exists('call_center_queue_context')) {
$queue_context = $_POST["queue_context"];
}
else if ($action == 'add') {
$queue_context = $_SESSION['domain_name'];
}
//remove invalid characters
$queue_cid_prefix = str_replace(":", "-", $queue_cid_prefix);
$queue_cid_prefix = str_replace("\"", "", $queue_cid_prefix);
@@ -152,13 +160,13 @@
//delete the agent from freeswitch
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the agent over event socket
if ($fp) {
if ($esl->is_connected()) {
//callcenter_config tier del [queue_name] [agent_name]
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid)) {
$cmd = "api callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
$response = event_socket::api($cmd);
}
}
@@ -187,7 +195,7 @@
if ($action == "update") {
$call_center_queue_uuid = $_POST["call_center_queue_uuid"];
}
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
@@ -316,11 +324,12 @@
if (permission_exists('call_center_email_address')) {
$array['call_center_queues'][0]['queue_email_address'] = $queue_email_address;
}
$array['call_center_queues'][0]['queue_context'] = $queue_context;
$array['call_center_queues'][0]['queue_description'] = $queue_description;
$array['call_center_queues'][0]['call_center_queue_uuid'] = $call_center_queue_uuid;
$array['call_center_queues'][0]['dialplan_uuid'] = $dialplan_uuid;
$array['call_center_queues'][0]['domain_uuid'] = $domain_uuid;
$y = 0;
if (!empty($_POST["call_center_tiers"])) {
foreach ($_POST["call_center_tiers"] as $row) {
@@ -397,7 +406,9 @@
$array['dialplans'][0]["dialplan_uuid"] = $dialplan_uuid;
$array['dialplans'][0]["dialplan_name"] = $queue_name;
$array['dialplans'][0]["dialplan_number"] = $queue_extension;
$array['dialplans'][0]["dialplan_context"] = $_SESSION['domain_name'];
if (isset($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";
@@ -457,9 +468,9 @@
if (!empty($agent_name)) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//add the agent using event socket
if ($fp) {
if ($esl->is_connected()) {
/* syntax:
callcenter_config tier add [queue_name] [agent_name] [level] [position]
callcenter_config tier set state [queue_name] [agent_name] [state]
@@ -468,20 +479,20 @@
*/
//add the agent
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid) && is_numeric($tier_level) && is_numeric($tier_position)) {
$cmd = "api callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
$response = event_socket::api($cmd);
}
usleep(200);
//agent set level
if (is_numeric($queue_extension) && is_numeric($tier_level)) {
$cmd = "api callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
$response = event_socket::api($cmd);
}
usleep(200);
//agent set position
if (is_numeric($queue_extension) && is_numeric($tier_position)) {
$cmd = "api callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
$response = event_socket::api($cmd);
}
usleep(200);
}
@@ -544,6 +555,7 @@
$queue_announce_frequency = $row["queue_announce_frequency"];
$queue_cc_exit_keys = $row["queue_cc_exit_keys"];
$queue_email_address = $row["queue_email_address"];
$queue_context = $row["queue_context"];
$queue_description = $row["queue_description"];
}
}
@@ -592,7 +604,16 @@
//get the sounds
$sounds = new sounds;
$sounds = $sounds->get();
$audio_files[0] = $sounds->get();
unset($sounds);
if (permission_exists('call_center_announce_sound')) {
$sounds = new sounds;
$sounds->sound_types = ['recordings'];
$sounds->full_path = ['recordings'];
$audio_files[1] = $sounds->get();
unset($sounds);
}
//set default values
if (empty($queue_strategy)) { $queue_strategy = "longest-idle-agent"; }
@@ -608,28 +629,12 @@
if (empty($queue_tier_rule_no_agent_no_wait)) { $queue_tier_rule_no_agent_no_wait = "true"; }
if (empty($queue_discard_abandoned_after)) { $queue_discard_abandoned_after = "900"; }
if (empty($queue_abandoned_resume_allowed)) { $queue_abandoned_resume_allowed = "false"; }
if (empty($queue_context)) { $queue_context = $_SESSION['domain_name']; }
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by recording_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$recordings = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//get the phrases
$sql = "select * from v_phrases ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
$phrases = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//show the header
if ($action == "add") {
$document['title'] = $text['title-call_center_queue_add'];
@@ -644,40 +649,85 @@
$call_center_queue_uuid = null;
}
//option to change select to text
if (if_group("superadmin")) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
//echo " tb.setAttribute('style', 'width: 380px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
//set the record_template
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'];
}
//show the content
if (permission_exists('recording_play') || permission_exists('recording_download')) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " function set_playable(id, audio_selected, audio_type) {\n";
echo " file_ext = audio_selected.split('.').pop();\n";
echo " var mime_type = '';\n";
echo " switch (file_ext) {\n";
echo " case 'wav': mime_type = 'audio/wav'; break;\n";
echo " case 'mp3': mime_type = 'audio/mpeg'; break;\n";
echo " case 'ogg': mime_type = 'audio/ogg'; break;\n";
echo " }\n";
echo " if (mime_type != '' && (audio_type == 'recordings' || audio_type == 'sounds')) {\n";
echo " if (audio_type == 'recordings') {\n";
echo " if (audio_selected.includes('/')) {\n";
echo " audio_selected = audio_selected.split('/').pop()\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('src', '../recordings/recordings.php?action=download&type=rec&filename=' + audio_selected);\n";
echo " }\n";
echo " else if (audio_type == 'sounds') {\n";
echo " $('#recording_audio_' + id).attr('src', '../switch/sounds.php?action=download&filename=' + audio_selected);\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('type', mime_type);\n";
echo " $('#recording_button_' + id).show();\n";
echo " }\n";
echo " else {\n";
echo " $('#recording_button_' + id).hide();\n";
echo " $('#recording_audio_' + id).attr('src','').attr('type','');\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
}
if (if_group("superadmin")) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " var objs;\n";
echo " function toggle_select_input(obj, instance_id){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.className='formfld';\n";
echo " tb.setAttribute('id', instance_id);\n";
echo " tb.setAttribute('style', 'width: ' + obj.offsetWidth + 'px;');\n";
if (!empty($on_change)) {
echo " tb.setAttribute('onchange', \"".$on_change."\");\n";
echo " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'none';\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ replace_element(this.objs, instance_id); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo " replace_element(this.objs, instance_id);\n";
echo " }\n";
echo " function replace_element(obj, instance_id){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'inline';\n";
if (!empty($on_change)) {
echo " ".$on_change.";\n";
}
echo " }\n";
echo "</script>\n";
}
echo "<form name='frm' id='frm' method='post'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
@@ -729,30 +779,76 @@
echo "</td>\n";
echo "</tr>\n";
$instance_id = 'queue_greeting';
$instance_label = 'greeting';
$instance_value = $queue_greeting;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-greeting']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo "<select name='queue_greeting' class='formfld' style='width: 200px;' ".((if_group("superadmin")) ? "onchange='changeToInput(this);'" : null).">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
foreach($sounds as $key => $value) {
echo "<optgroup label=".$text['label-'.$key].">\n";
$selected = false;
foreach($value as $row) {
if (!empty($queue_greeting) && $queue_greeting == $row["value"]) {
$selected = true;
echo " <option value='".escape($row["value"])."' selected='selected'>".escape($row["name"])."</option>\n";
}
else {
echo " <option value='".escape($row["value"])."'>".escape($row["name"])."</option>\n";
$found = $playable = false;
if (!empty($audio_files[0]) && is_array($audio_files[0]) && @sizeof($audio_files[0]) != 0) {
foreach ($audio_files[0] as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
echo "</optgroup>\n";
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."')"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-greeting']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
@@ -913,10 +1009,9 @@
echo " ".$text['label-record_template']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}";
echo " <select class='formfld' name='queue_record_template'>\n";
if (!empty($queue_record_template)) {
echo " <option value='".escape($queue_record_template)."' selected='selected' >".$text['option-true']."</option>\n";
echo " <option value='".escape($record_template)."' selected='selected' >".$text['option-true']."</option>\n";
}
else {
echo " <option value='".escape($record_template)."'>".$text['option-true']."</option>\n";
@@ -1184,103 +1279,76 @@
}
if (permission_exists('call_center_announce_sound')) {
$instance_id = 'queue_announce_sound';
$instance_label = 'caller_announce_sound';
$instance_value = $queue_announce_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-caller_announce_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
$destination_id = "queue_announce_sound";
$script = "<script>\n";
$script .= "var objs;\n";
$script .= "\n";
$script .= "function changeToInput".$destination_id."(obj){\n";
$script .= " tb=document.createElement('INPUT');\n";
$script .= " tb.type='text';\n";
$script .= " tb.name=obj.name;\n";
$script .= " tb.className='formfld';\n";
$script .= " tb.setAttribute('id', '".$destination_id."');\n";
$script .= " tb.setAttribute('style', '".!empty($select_style)."');\n";
if (!empty($on_change)) {
$script .= " tb.setAttribute('onchange', \"".$on_change."\");\n";
$script .= " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
$script .= " tb.value=obj.options[obj.selectedIndex].value;\n";
$script .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
$script .= " tbb=document.createElement('INPUT');\n";
$script .= " tbb.setAttribute('class', 'btn');\n";
$script .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
$script .= " tbb.type='button';\n";
$script .= " tbb.value=$('<div />').html('&#9665;').text();\n";
$script .= " tbb.objs=[obj,tb,tbb];\n";
$script .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
$script .= " obj.parentNode.insertBefore(tb,obj);\n";
$script .= " obj.parentNode.insertBefore(tbb,obj);\n";
$script .= " obj.parentNode.removeChild(obj);\n";
$script .= " Replace".$destination_id."(this.objs);\n";
$script .= "}\n";
$script .= "\n";
$script .= "function Replace".$destination_id."(obj){\n";
$script .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
$script .= " obj[0].parentNode.removeChild(obj[1]);\n";
$script .= " obj[0].parentNode.removeChild(obj[2]);\n";
$script .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
if (!empty($on_change)) {
$script .= " ".$on_change.";\n";
}
$script .= "}\n";
$script .= "</script>\n";
$script .= "\n";
echo $script;
echo "<select name='queue_announce_sound' id='queue_announce_sound' class='formfld'>\n";
echo " <option></option>\n";
//recordings
$tmp_selected = false;
if (!empty($recordings)) {
echo "<optgroup label='Recordings'>\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
if (!empty($queue_announce_sound) && $queue_announce_sound == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename) {
$tmp_selected = true;
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else if (!empty($queue_announce_sound) && $queue_announce_sound == $recording_filename) {
$tmp_selected = true;
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else {
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($recording_filename)."'>".escape($recording_name)."</option>\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files[1]) && is_array($audio_files[1]) && @sizeof($audio_files[1]) != 0) {
foreach ($audio_files[1] as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
echo "</optgroup>\n";
}
if (!$tmp_selected && !empty($queue_announce_sound)) {
echo "<optgroup label='Selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$queue_announce_sound)) {
echo " <option value='".escape($_SESSION['switch']['recordings']['dir'])."/".escape($_SESSION['domain_name'])."/".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
else if (substr($queue_announce_sound, -3) == "wav" || substr($queue_announce_sound, -3) == "mp3") {
echo " <option value='".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
else {
echo " <option value='".escape($queue_announce_sound)."' selected='selected'>".escape($queue_announce_sound)."</option>\n";
}
echo "</optgroup>\n";
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($tmp_selected);
unset($selected);
echo " </select>\n";
echo "<input type='button' id='btn_select_to_input_".escape($destination_id)."' class='btn' name='' alt='back' onclick='changeToInput".escape($destination_id)."(document.getElementById(\"".escape($destination_id)."\"));this.style.visibility = \"hidden\";' value='&#9665;'>";
unset($destination_id);
echo " <br />\n";
echo $text['description-caller_announce_sound']."\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."')"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
}
@@ -1322,6 +1390,19 @@
echo "</tr>\n";
}
if (permission_exists('call_center_queue_context')) {
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-context']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='queue_context' maxlength='255' value=\"".escape($queue_context)."\" required='required'>\n";
echo "<br />\n";
echo $text['description-enter-context']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-description']."\n";
@@ -1348,3 +1429,4 @@
require_once "resources/footer.php";
?>
+2 -1
View File
@@ -79,6 +79,7 @@
//get http variables and set as php variables
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'queue_extension' ? 'natural' : null;
//add the search term
$search = strtolower($_GET["search"] ?? '');
@@ -117,7 +118,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql ?? '');
$sql .= order_by($order_by, $order, 'queue_name', 'asc');
$sql .= order_by($order_by, $order, 'queue_name', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$result = $database->select($sql, $parameters ?? null, 'all');
+5 -6
View File
@@ -70,11 +70,10 @@
//connect to event socket
if (isset($queue_extension) && isset($cmd)) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$response = event_socket_request($fp, 'api reloadxml');
$response = event_socket_request($fp, 'api callcenter_config queue '.$cmd. ' '.$queue_extension."@".$_SESSION["domain_name"]);
fclose($fp);
$esl = event_socket::create();
if ($esl->is_connected()) {
$response = event_socket::api('reloadxml');
$response = event_socket::api('callcenter_config queue '.$cmd.' '.$queue_extension.'@'.$_SESSION['domain_name']);
}
else {
$response = '';
@@ -85,4 +84,4 @@
$_SESSION["message"] = $response;
header("Location: call_center_queues.php?savemsg=".urlencode($response));
?>
?>
@@ -338,13 +338,13 @@
if (is_array($array) && @sizeof($array) != 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the queue in the switch
if ($fp) {
if ($esl->is_connected()) {
foreach ($uuids as $uuid) {
$cmd = "api callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION["domain_name"];
$response = event_socket_request($fp, $cmd);
$cmd = "callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION['domain_name'];
$response = event_socket::api($cmd);
}
}
@@ -436,13 +436,12 @@
if (is_array($array) && @sizeof($array) != 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//delete the agent in the switch
if ($fp) {
if ($esl->is_connected()) {
foreach ($uuids as $uuid) {
$cmd = "api callcenter_config agent del ".$uuid;
$response = event_socket_request($fp, $cmd);
event_socket::async("callcenter_config agent del $uuid");
}
}
@@ -627,4 +626,4 @@ $c->queue_cc_exit_keys = "";
$c->dialplan();
*/
?>
?>
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2017-2019
Portions created by the Initial Developer are Copyright (C) 2017-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -51,40 +51,77 @@
}
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the http post values and set them as php variables
if (count($_POST) > 0) {
if (!empty($_POST['agents'])) {
//get the agent id
if (is_uuid($_POST['agents'][0]['id'])) {
$agent_uuid = $_POST['agents'][0]['id'];
}
//get the agent details from event socket
if (is_uuid($agent_uuid)) {
$switch_cmd = 'callcenter_config agent list '.$agent['call_center_agent_uuid'];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$call_center_agent = csv_to_named_array($event_socket_str, '|');
$agent['agent_status'] = $call_center_agent[1]['status'];
}
//find the agent_status - used for mod_call_center as there is only one agent status not one per queue
$agent_status = 'Logged Out';
foreach ($_POST['agents'] as $row) {
if (!empty($row['agent_status'])) {
//agent set status
if ($fp) {
// update the database
$array['call_center_agents'][0]['call_center_agent_uuid'] = $row['id'];
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
$array['call_center_agents'][0]['agent_status'] = $row['agent_status'];
$database->app_name = 'call_centers_dashboard';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$database->save($array);
if ($row['agent_status'] == 'Available') {
$agent_status = 'Available';
break;
}
if ($row['agent_status'] == 'On Break') {
$agent_status = 'On Break';
break;
}
}
//set the call center status
$cmd = "api callcenter_config agent set status ".$row['id']." '".$row['agent_status']."'";
$response = event_socket_request($fp, $cmd);
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'Available') {
//assign the agent to the queue
$cmd = "api callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket_request($fp, $cmd);
}
//save the agent_stat change to the database
$array['call_center_agents'][0]['call_center_agent_uuid'] = $agent_uuid;
$array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid'];
$array['call_center_agents'][0]['agent_status'] = $agent_status;
$database->app_name = 'call_centers_dashboard';
$database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370';
$result = $database->save($array);
//un-assign the agent from the queue
if ($row['agent_status'] == 'Logged Out') {
$cmd = "api callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
$response = event_socket_request($fp, $cmd);
}
usleep(200);
unset($parameters);
}
//send the agent status status to mod_call_center
$cmd = "callcenter_config agent set status ".$agent_uuid." '".$agent_status."'";
$response = event_socket::api($cmd);
//add or delete agents from the queue assigned by the tier
foreach ($_POST['agents'] as $row) {
//agent set status
if ($fp && is_numeric($row['queue_extension']) && is_uuid($row['id'])) {
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'Available') {
//assign the agent to the queue
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket::api($cmd);
}
//set the agent status to available and assign the agent to the queue with the tier
if ($row['agent_status'] == 'On Break') {
//assign the agent to the queue
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
$response = event_socket::api($cmd);
}
//un-assign the agent from the queue
if ($row['agent_status'] == 'Logged Out') {
$cmd = "callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
$response = event_socket::api($cmd);
}
//small sleep
usleep(200);
}
}
@@ -95,18 +132,9 @@
//get the agent list from event socket
$switch_cmd = 'callcenter_config tier list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
//get the call center queues from the database
$sql = "select * from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by queue_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$call_center_queues = $database->select($sql, $parameters, 'all');
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
unset($sql, $parameters);
//get the agents from the database
$sql = "select * from v_call_center_agents ";
$sql .= "where user_uuid = :user_uuid ";
@@ -114,21 +142,47 @@
$parameters['user_uuid'] = $_SESSION['user_uuid'];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$agents = $database->select($sql, $parameters, 'all');
if (count($agents) > 0) {
if (!empty($agents)) {
$agent = $agents[0];
}
unset($sql, $parameters);
//get the call center queues from the database
if (!empty($_SESSION['call_center']['queue_login']['text']) && $_SESSION['call_center']['queue_login']['text'] == 'dynamic') {
$sql = "select * from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and call_center_queue_uuid in ( ";
$sql .= " select call_center_queue_uuid from v_call_center_tiers ";
$sql .= " where call_center_agent_uuid = :call_center_agent_uuid ";
$sql .= ") ";
$parameters['call_center_agent_uuid'] = $agent['call_center_agent_uuid'];
$sql .= "order by queue_extension asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$call_center_queues = $database->select($sql, $parameters, 'all');
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
unset($sql, $parameters);
}
//get the agent details from event socket
$switch_cmd = 'callcenter_config agent list '.$agent['call_center_agent_uuid'];
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$call_center_agent = csv_to_named_array($event_socket_str, '|');
//set the agent status
$agent['agent_status'] = $call_center_agent[1]['status'];
//update the queue status
$x = 0;
foreach ($call_center_queues as $queue) {
$call_center_queues[$x]['queue_status'] = 'Logged Out';
foreach ($call_center_tiers as $tier) {
if ($queue['queue_extension'] .'@'. $_SESSION['user']['domain_name'] == $tier['queue'] && $agent['call_center_agent_uuid'] == $tier['agent']) {
$call_center_queues[$x]['queue_status'] = $agent['agent_status'];
if (is_array($call_center_queues)) {
foreach ($call_center_queues as $queue) {
$call_center_queues[$x]['queue_status'] = 'Logged Out';
foreach ($call_center_tiers as $tier) {
if ($queue['queue_extension'] .'@'. $_SESSION['user']['domain_name'] == $tier['queue'] && $agent['call_center_agent_uuid'] == $tier['agent']) {
$call_center_queues[$x]['queue_status'] = $agent['agent_status'];
}
}
$x++;
}
$x++;
}
//includes the header
@@ -136,12 +190,15 @@
//radio button cycle script
echo "<script>\n";
echo "\n";
echo " function get_selected(radio_group) {\n";
echo " for (var i = 0; i < radio_group.length; i++) {\n";
echo " if (radio_group[i].checked) { return i; }\n";
echo " }\n";
echo " return 0;\n";
echo " }\n";
echo "\n";
echo " function cycle(radio_group_name) {\n";
echo " var radios = document.getElementsByName(radio_group_name);\n";
@@ -153,13 +210,58 @@
echo " radios[i+1].checked = true;\n";
echo " }\n";
echo " }\n";
echo "\n";
echo " function handle_status_change(agent_index) {\n";
echo " var agent_status = document.querySelector('input[name=\"agents[' + agent_index + '][agent_status]\"]:checked').value;\n";
echo " var radio_buttons = document.querySelectorAll('#form_list_call_center_agent_dashboard input[type=\"radio\"]');\n";
//echo "console.log('status: '+agent_status);\n";
//echo " radio_checked_value = '';\n";
echo " radio_buttons.forEach(function(radio_button) {\n";
//echo " if (radio_button.checked == true && radio_button.value === 'Available') {\n";
//echo " radio_checked_value = 'Available';\n";
//echo " }\n";
//echo " if (radio_button.checked == true && radio_button.value === 'On Break') {\n";
//echo " radio_checked_value = 'On Break';\n";
//echo " }\n";
//echo " if (radio_button.value === 'Logged Out') {\n";
//echo " radio_checked_value = 'Logged Out';\n";
//echo " }\n";
echo " if (radio_button.checked) { console.log('checked: '+radio_button.value) }\n";
echo " if (radio_button.value === 'Available' && agent_status === 'Available') {\n"; // radio_checked_value == 'On Break' &&
//echo " radio_button.checked = true;\n";
//echo " radio_button.value = 'Available';\n";
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
//echo " console.log('--'+radio_button.value+'--');\n";
//echo " console.log('need to change status On Break to Available');\n";
//echo " console.log('---');\n";
echo " }\n";
echo " if (radio_button.value === 'On Break' && agent_status === 'On Break') {\n"; // radio_checked_value == 'Available' &&
//echo " radio_button.checked = true;\n";
//echo " radio_button.value = 'On Break';\n";
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
//echo " console.log('--'+radio_button.value+'--');\n";
//echo " console.log('need to change status Available to On Break');\n";
//echo " console.log('---');\n";
echo " }\n";
//echo " console.log('checked: '+radio_button.checked+' value:'+radio_button.value);\n";
//echo " console.log('radio checked value: '+ radio_checked_value +' checked: '+radio_button.checked+' value:'+radio_button.value);\n";
//else if (agent_status === 'Available') {\n";
//echo " radio_button.checked = true;\n";
//echo " }\n";
echo " });\n";
echo " }\n";
echo "\n";
echo "</script>\n";
//show the content
echo "<div class='action_bar sub'>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues'].($agent['agent_name'] != '' ? "&nbsp;&nbsp;&nbsp;</b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"list_form_submit('form_list_call_center_agent_dashboard');"]);
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"document.getElementById('form_list_call_center_agent_dashboard').submit();"]);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
@@ -170,34 +272,25 @@
echo "<tr class='list-header'>\n";
echo " <th>".$text['label-queue_name']."</th>\n";
echo " <th class='shrink'>".$text['label-status']."</th>\n";
// echo " <th>".$text['label-options']."</th>\n";
echo "</tr>\n";
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
$x = 0;
foreach ($call_center_queues as $row) {
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
$onclick = '';
echo "<tr class='list-row'>\n";
echo " <td ".$onclick.">".escape($row['queue_name'])."</td>\n";
// echo " <td>";
// if ($row['queue_status'] == "Available") {
// echo $text['option-available'];
// }
// if ($row['queue_status'] == "Logged Out") {
// echo $text['option-logged_out'];
// }
// echo " </td>\n";
echo " <td class='no-wrap right'>\n";
echo " <input type='hidden' name='agents[".$x."][queue_extension]' value='".escape($row['queue_extension'])."'>\n";
echo " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($agent['agent_name'])."'>\n";
echo " <input type='hidden' name='agents[".$x."][id]' value='".escape($agent['call_center_agent_uuid'])."'>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null).">&nbsp;".$text['option-available']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null).">&nbsp;".$text['option-logged_out']."</label>\n";
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null).">&nbsp;".$text['option-on_break']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-available']."</label>\n";
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-logged_out']."</label>\n";
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'>&nbsp;".$text['option-on_break']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
$x++;
}
unset($call_center_queues);
}
@@ -31,11 +31,11 @@
}
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//get the agent list from event socket
$switch_cmd = 'callcenter_config agent list';
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$event_socket_str = trim(event_socket::api($switch_cmd));
$agent_list = csv_to_named_array($event_socket_str, '|');
//get the agents from the database
@@ -69,7 +69,7 @@
}
//build the event
if ($fp) {
if ($esl->is_connected()) {
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: agent\n";
$event .= "from: ".$row['agent_name']."@".$row['domain_name']."\n";
@@ -104,16 +104,13 @@
}
//send the event
$result = event_socket_request($fp, $event);
$result = event_socket::command($event);
if (isset($debug)) {
print_r($result, false);
}
}
//close event socket connection
fclose($fp);
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_centers/resources/jobs/call_center_agents.php
*/
+5 -5
View File
@@ -34,9 +34,9 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_flows";
$apps[$x]['destinations'][$y]['name'] = "call_flows";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid, call_flow_uuid as uuid, call_flow_extension as destination, call_flow_extension as extension, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(call_flow_extension) asc";
$apps[$x]['destinations'][$y]['field']['call_flow_uuid'] = "call_flow_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "call_flow_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
@@ -49,9 +49,9 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "call_flows";
$apps[$x]['destinations'][$y]['name'] = "call_flows";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid as uuid, call_flow_extension as extension, call_flow_feature_code as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "call_flow_extension asc";
$apps[$x]['destinations'][$y]['sql'] = "select call_flow_name as name, call_flow_uuid, call_flow_uuid as uuid, call_flow_feature_code as extension, call_flow_feature_code as destination, call_flow_context as context from v_call_flows ";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and call_flow_feature_code is not null and call_flow_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(call_flow_feature_code) asc";
$apps[$x]['destinations'][$y]['field']['uuid'] = "uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "name";
$apps[$x]['destinations'][$y]['field']['destination'] = "destination";
+38 -3
View File
@@ -6,6 +6,7 @@ $text['title-call_flows']['ar-eg'] = "تدفق المكالمات";
$text['title-call_flows']['de-at'] = "Anruf Steuerung";
$text['title-call_flows']['de-ch'] = "Anruf Steuerung";
$text['title-call_flows']['de-de'] = "Anruf Steuerung";
$text['title-call_flows']['el-gr'] = "Ροές κλήσεων";
$text['title-call_flows']['es-cl'] = "Flujo de Llamada";
$text['title-call_flows']['es-mx'] = "Flujo de Llamada";
$text['title-call_flows']['fr-ca'] = "Flux d'appel";
@@ -30,6 +31,7 @@ $text['title-call_flow']['ar-eg'] = "تدفق الدعوة من";
$text['title-call_flow']['de-at'] = "Anruf Steuerung";
$text['title-call_flow']['de-ch'] = "Anruf Steuerung";
$text['title-call_flow']['de-de'] = "Anruf Steuerung";
$text['title-call_flow']['el-gr'] = "Ροή κλήσης";
$text['title-call_flow']['es-cl'] = "Flujo de Llamada";
$text['title-call_flow']['es-mx'] = "Flujo de Llamada";
$text['title-call_flow']['fr-ca'] = "Editer le flux";
@@ -54,6 +56,7 @@ $text['title-call_flow_extension']['ar-eg'] = "تدفقات المكالمات -
$text['title-call_flow_extension']['de-at'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['de-ch'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['de-de'] = "Anruf Steuerung - Ziel";
$text['title-call_flow_extension']['el-gr'] = "Ροές κλήσεων - Επέκταση";
$text['title-call_flow_extension']['es-cl'] = "Flujo de Llamada - Destino";
$text['title-call_flow_extension']['es-mx'] = "Flujo de Llamada - Destino";
$text['title-call_flow_extension']['fr-ca'] = "Flux d'appel - Destination";
@@ -78,6 +81,7 @@ $text['title-call_flow_feature']['ar-eg'] = "تدفقات المكالمات -
$text['title-call_flow_feature']['de-at'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['de-ch'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['de-de'] = "Anruf Steuerung - Funktions";
$text['title-call_flow_feature']['el-gr'] = "Ροές κλήσεων - Δυνατότητα";
$text['title-call_flow_feature']['es-cl'] = "Flujo de Llamada - distintivo";
$text['title-call_flow_feature']['es-mx'] = "Flujo de Llamada - distintivo";
$text['title-call_flow_feature']['fr-ca'] = "Flux d'appel - Fonction";
@@ -102,6 +106,7 @@ $text['label-call_flow_name']['ar-eg'] = "اسم";
$text['label-call_flow_name']['de-at'] = "Name";
$text['label-call_flow_name']['de-ch'] = "Name";
$text['label-call_flow_name']['de-de'] = "Name";
$text['label-call_flow_name']['el-gr'] = "Ονομα";
$text['label-call_flow_name']['es-cl'] = "Nombre";
$text['label-call_flow_name']['es-mx'] = "Nombre";
$text['label-call_flow_name']['fr-ca'] = "Nom";
@@ -126,6 +131,7 @@ $text['label-call_flow_status']['ar-eg'] = "اسم";
$text['label-call_flow_status']['de-at'] = "Aktiviert";
$text['label-call_flow_status']['de-ch'] = "Aktiviert";
$text['label-call_flow_status']['de-de'] = "Aktiviert";
$text['label-call_flow_status']['el-gr'] = "Κατάσταση";
$text['label-call_flow_status']['es-cl'] = "Estado";
$text['label-call_flow_status']['es-mx'] = "Estado";
$text['label-call_flow_status']['fr-ca'] = "Etat";
@@ -150,6 +156,7 @@ $text['label-call_flow_pin_number']['ar-eg'] = "الرقم السري";
$text['label-call_flow_pin_number']['de-at'] = "PIN Nummer";
$text['label-call_flow_pin_number']['de-ch'] = "PIN Nummer";
$text['label-call_flow_pin_number']['de-de'] = "PIN Nummer";
$text['label-call_flow_pin_number']['el-gr'] = "Αριθμός PIN";
$text['label-call_flow_pin_number']['es-cl'] = "Número PIN";
$text['label-call_flow_pin_number']['es-mx'] = "Número PIN";
$text['label-call_flow_pin_number']['fr-ca'] = "Code PIN";
@@ -162,7 +169,7 @@ $text['label-call_flow_pin_number']['pt-br'] = "Código PIN";
$text['label-call_flow_pin_number']['pt-pt'] = "Código PIN";
$text['label-call_flow_pin_number']['ro-ro'] = "Numarul pin";
$text['label-call_flow_pin_number']['ru-ru'] = "PIN код";
$text['label-call_flow_pin_number']['sv-se'] = "PIN Kod";
$text['label-call_flow_pin_number']['sv-se'] = "Pinkod";
$text['label-call_flow_pin_number']['uk-ua'] = "PIN-код";
$text['label-call_flow_pin_number']['zh-cn'] = "密码";
$text['label-call_flow_pin_number']['ja-jp'] = "暗証番号";
@@ -174,6 +181,7 @@ $text['label-call_flow_feature_code']['ar-eg'] = "رمز الميزة";
$text['label-call_flow_feature_code']['de-at'] = "Funktions-Code";
$text['label-call_flow_feature_code']['de-ch'] = "Funktions-Code";
$text['label-call_flow_feature_code']['de-de'] = "Funktions-Code";
$text['label-call_flow_feature_code']['el-gr'] = "Κωδικός χαρακτηριστικών";
$text['label-call_flow_feature_code']['es-cl'] = "Código distintivo";
$text['label-call_flow_feature_code']['es-mx'] = "Código distintivo";
$text['label-call_flow_feature_code']['fr-ca'] = "Code Fonction";
@@ -198,6 +206,7 @@ $text['label-call_flow_extension']['ar-eg'] = "امتداد";
$text['label-call_flow_extension']['de-at'] = "Nebenstelle";
$text['label-call_flow_extension']['de-ch'] = "Nebenstelle";
$text['label-call_flow_extension']['de-de'] = "Nebenstelle";
$text['label-call_flow_extension']['el-gr'] = "Επέκταση";
$text['label-call_flow_extension']['es-cl'] = "Extensión";
$text['label-call_flow_extension']['es-mx'] = "Extensión";
$text['label-call_flow_extension']['fr-ca'] = "Extension";
@@ -222,6 +231,7 @@ $text['label-call_flow_label']['ar-eg'] = "تسمية الوجهة";
$text['label-call_flow_label']['de-at'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['de-ch'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['de-de'] = "Ziel Kennzeichnung";
$text['label-call_flow_label']['el-gr'] = "Ετικέτα προορισμού";
$text['label-call_flow_label']['es-cl'] = "Etiqueta de Destino";
$text['label-call_flow_label']['es-mx'] = "Etiqueta de Destino";
$text['label-call_flow_label']['fr-ca'] = "Label de la destination";
@@ -234,7 +244,7 @@ $text['label-call_flow_label']['pt-br'] = "Etiqueta de destino";
$text['label-call_flow_label']['pt-pt'] = "Destino";
$text['label-call_flow_label']['ro-ro'] = "Etichetă de destinație";
$text['label-call_flow_label']['ru-ru'] = "Название направления";
$text['label-call_flow_label']['sv-se'] = "Destination Etikett";
$text['label-call_flow_label']['sv-se'] = "Destinations Etikett";
$text['label-call_flow_label']['uk-ua'] = "призначення етикетки";
$text['label-call_flow_label']['zh-cn'] = "目的地标签";
$text['label-call_flow_label']['ja-jp'] = "宛先ラベル";
@@ -246,6 +256,7 @@ $text['label-call_flow_destination']['ar-eg'] = "وجهة";
$text['label-call_flow_destination']['de-at'] = "Ziel";
$text['label-call_flow_destination']['de-ch'] = "Ziel";
$text['label-call_flow_destination']['de-de'] = "Ziel";
$text['label-call_flow_destination']['el-gr'] = "Προορισμός";
$text['label-call_flow_destination']['es-cl'] = "Destino";
$text['label-call_flow_destination']['es-mx'] = "Destino";
$text['label-call_flow_destination']['fr-ca'] = "Destination";
@@ -270,6 +281,7 @@ $text['label-call_flow_context']['ar-eg'] = "سياق";
$text['label-call_flow_context']['de-at'] = "Kontext";
$text['label-call_flow_context']['de-ch'] = "Kontext";
$text['label-call_flow_context']['de-de'] = "Kontext";
$text['label-call_flow_context']['el-gr'] = "Συμφραζόμενα";
$text['label-call_flow_context']['es-cl'] = "Contexto";
$text['label-call_flow_context']['es-mx'] = "Contexto";
$text['label-call_flow_context']['fr-ca'] = "Contexte";
@@ -294,6 +306,7 @@ $text['label-call_flow_alternate_label']['ar-eg'] = "التسمية البديل
$text['label-call_flow_alternate_label']['de-at'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['de-ch'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['de-de'] = "Alternative Bezeichnung";
$text['label-call_flow_alternate_label']['el-gr'] = "Εναλλακτική ετικέτα";
$text['label-call_flow_alternate_label']['es-cl'] = "Etiqueta alternativa";
$text['label-call_flow_alternate_label']['es-mx'] = "Etiqueta alternativa";
$text['label-call_flow_alternate_label']['fr-ca'] = "Label alternatif";
@@ -318,6 +331,7 @@ $text['label-call_flow_alternate_destination']['ar-eg'] = "وجهة بديلة";
$text['label-call_flow_alternate_destination']['de-at'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['de-ch'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['de-de'] = "Alternatives Ziel";
$text['label-call_flow_alternate_destination']['el-gr'] = "Εναλλακτικός προορισμός";
$text['label-call_flow_alternate_destination']['es-cl'] = "Destino Alternativo";
$text['label-call_flow_alternate_destination']['es-mx'] = "Destino Alternativo";
$text['label-call_flow_alternate_destination']['fr-ca'] = "Destination alternative";
@@ -342,6 +356,7 @@ $text['label-call_flow_sound']['ar-eg'] = "صوت";
$text['label-call_flow_sound']['de-at'] = "Rufton";
$text['label-call_flow_sound']['de-ch'] = "Rufton";
$text['label-call_flow_sound']['de-de'] = "Rufton";
$text['label-call_flow_sound']['el-gr'] = "Ήχος";
$text['label-call_flow_sound']['es-cl'] = "Sonar";
$text['label-call_flow_sound']['es-mx'] = "Sonar";
$text['label-call_flow_sound']['fr-ca'] = "Sonner";
@@ -366,6 +381,7 @@ $text['label-call_flow_alternate_sound']['ar-eg'] = "صوت بديل";
$text['label-call_flow_alternate_sound']['de-at'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['de-ch'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['de-de'] = "Alternativer Rufton";
$text['label-call_flow_alternate_sound']['el-gr'] = "Εναλλακτικός ήχος";
$text['label-call_flow_alternate_sound']['es-cl'] = "sonido alternativo";
$text['label-call_flow_alternate_sound']['es-mx'] = "sonido alternativo";
$text['label-call_flow_alternate_sound']['fr-ca'] = "son suppléant";
@@ -390,6 +406,7 @@ $text['label-call_flow_description']['ar-eg'] = "وصف";
$text['label-call_flow_description']['de-at'] = "Beschreibung";
$text['label-call_flow_description']['de-ch'] = "Beschreibung";
$text['label-call_flow_description']['de-de'] = "Beschreibung";
$text['label-call_flow_description']['el-gr'] = "Περιγραφή";
$text['label-call_flow_description']['es-cl'] = "Descripción";
$text['label-call_flow_description']['es-mx'] = "Descripción";
$text['label-call_flow_description']['fr-ca'] = "Description";
@@ -414,6 +431,7 @@ $text['header-call_flows']['ar-eg'] = "تدفق المكالمات";
$text['header-call_flows']['de-at'] = "Anruf Steuerung";
$text['header-call_flows']['de-ch'] = "Anruf Steuerung";
$text['header-call_flows']['de-de'] = "Anruf Steuerung";
$text['header-call_flows']['el-gr'] = "Ροές κλήσεων";
$text['header-call_flows']['es-cl'] = "flujo de Llamada";
$text['header-call_flows']['es-mx'] = "flujo de Llamada";
$text['header-call_flows']['fr-ca'] = "Flux d'appel";
@@ -438,6 +456,7 @@ $text['header-call_flow']['ar-eg'] = "تدفق الدعوة من";
$text['header-call_flow']['de-at'] = "Anruf Steuerung";
$text['header-call_flow']['de-ch'] = "Anruf Steuerung";
$text['header-call_flow']['de-de'] = "Anruf Steuerung";
$text['header-call_flow']['el-gr'] = "Ροή κλήσης";
$text['header-call_flow']['es-cl'] = "Flujo de Llamada";
$text['header-call_flow']['es-mx'] = "Flujo de Llamada";
$text['header-call_flow']['fr-ca'] = "Editer le flux";
@@ -462,6 +481,7 @@ $text['description-call_flow_status']['ar-eg'] = "حدد الحالة.";
$text['description-call_flow_status']['de-at'] = "Status festlegen.";
$text['description-call_flow_status']['de-ch'] = "Status festlegen.";
$text['description-call_flow_status']['de-de'] = "Status festlegen.";
$text['description-call_flow_status']['el-gr'] = "Επιλέξτε την κατάσταση.";
$text['description-call_flow_status']['es-cl'] = "Seleccione el estado.";
$text['description-call_flow_status']['es-mx'] = "Seleccione el estado.";
$text['description-call_flow_status']['fr-ca'] = "Choisir le statut.";
@@ -486,6 +506,7 @@ $text['description-call_flow_pin_number']['ar-eg'] = "أدخل الرقم الس
$text['description-call_flow_pin_number']['de-at'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['de-ch'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['de-de'] = "Geben Sie eine PIN ein.";
$text['description-call_flow_pin_number']['el-gr'] = "Εισαγάγετε τον αριθμό pin.";
$text['description-call_flow_pin_number']['es-cl'] = "Ingrese el número PIN.";
$text['description-call_flow_pin_number']['es-mx'] = "Ingrese el número PIN.";
$text['description-call_flow_pin_number']['fr-ca'] = "Choisir le code PIN.";
@@ -498,7 +519,7 @@ $text['description-call_flow_pin_number']['pt-br'] = "Insira o código PIN.";
$text['description-call_flow_pin_number']['pt-pt'] = "Introduza o código PIN";
$text['description-call_flow_pin_number']['ro-ro'] = "Introduceți numărul PIN.";
$text['description-call_flow_pin_number']['ru-ru'] = "Введите пин-код.";
$text['description-call_flow_pin_number']['sv-se'] = "Ange PIN Kod.";
$text['description-call_flow_pin_number']['sv-se'] = "Ange Pinkod.";
$text['description-call_flow_pin_number']['uk-ua'] = "Введіть пін - код.";
$text['description-call_flow_pin_number']['zh-cn'] = "输入密码。";
$text['description-call_flow_pin_number']['ja-jp'] = "ピン番号を入力します。";
@@ -510,6 +531,7 @@ $text['description-call_flow_name']['ar-eg'] = "أدخل الاسم.";
$text['description-call_flow_name']['de-at'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['de-ch'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['de-de'] = "Geben Sie den Namen an";
$text['description-call_flow_name']['el-gr'] = "Εισαγάγετε το όνομα.";
$text['description-call_flow_name']['es-cl'] = "Ingrese el nombre.";
$text['description-call_flow_name']['es-mx'] = "Ingrese el nombre.";
$text['description-call_flow_name']['fr-ca'] = "Choisir le nom.";
@@ -534,6 +556,7 @@ $text['description-call_flow_feature_code']['ar-eg'] = "أدخل رمز المي
$text['description-call_flow_feature_code']['de-at'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['de-ch'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['de-de'] = "Geben Sie den Funktions-Code an.";
$text['description-call_flow_feature_code']['el-gr'] = "Εισαγάγετε τον κωδικό λειτουργίας.";
$text['description-call_flow_feature_code']['es-cl'] = "Ingrese el código distintivo.";
$text['description-call_flow_feature_code']['es-mx'] = "Ingrese el código distintivo.";
$text['description-call_flow_feature_code']['fr-ca'] = "Choisir le code la fonction";
@@ -558,6 +581,7 @@ $text['description-call_flow_extension']['ar-eg'] = "أدخل الرقم الد
$text['description-call_flow_extension']['de-at'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['de-ch'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['de-de'] = "Weisen Sie die Nebenstelle aus.";
$text['description-call_flow_extension']['el-gr'] = "Εισαγάγετε τον αριθμό επέκτασης.";
$text['description-call_flow_extension']['es-cl'] = "Ingrese el número de extensión.";
$text['description-call_flow_extension']['es-mx'] = "Ingrese el número de extensión.";
$text['description-call_flow_extension']['fr-ca'] = "Choisir le numéro d'extension.";
@@ -582,6 +606,7 @@ $text['description-call_flow_destination_label']['ar-eg'] = "أدخل تسمية
$text['description-call_flow_destination_label']['de-at'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['de-ch'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['de-de'] = "Geben Sie eine Beschreibung für das Ziel an.";
$text['description-call_flow_destination_label']['el-gr'] = "Εισαγάγετε την ετικέτα προορισμού.";
$text['description-call_flow_destination_label']['es-cl'] = "Ingrese la etiqueta de destino.";
$text['description-call_flow_destination_label']['es-mx'] = "Ingrese la etiqueta de destino.";
$text['description-call_flow_destination_label']['fr-ca'] = "Choisir le label de la destination.";
@@ -606,6 +631,7 @@ $text['description-call_flow_destination']['ar-eg'] = "حدد الوجهة.";
$text['description-call_flow_destination']['de-at'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['de-ch'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['de-de'] = "Wählen Sie das Ziel.";
$text['description-call_flow_destination']['el-gr'] = "Επιλέξτε τον προορισμό.";
$text['description-call_flow_destination']['es-cl'] = "Seleccione el destino.";
$text['description-call_flow_destination']['es-mx'] = "Seleccione el destino.";
$text['description-call_flow_destination']['fr-ca'] = "Choisir la destination.";
@@ -630,6 +656,7 @@ $text['description-call_flow_context']['ar-eg'] = "أدخل السياق.";
$text['description-call_flow_context']['de-at'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['de-ch'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['de-de'] = "Geben Sie den Kontext hier an.";
$text['description-call_flow_context']['el-gr'] = "Εισαγάγετε το πλαίσιο.";
$text['description-call_flow_context']['es-cl'] = "Ingrese el contexto.";
$text['description-call_flow_context']['es-mx'] = "Ingrese el contexto.";
$text['description-call_flow_context']['fr-ca'] = "Choisir le contexte.";
@@ -654,6 +681,7 @@ $text['description-call_flows']['ar-eg'] = "مكالمات مباشرة بين
$text['description-call_flows']['de-at'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['de-ch'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['de-de'] = "Leiten Sie Anrufe zwischen zwei Zielen um indem Sie einen Funktions-Code wählen.";
$text['description-call_flows']['el-gr'] = "Απευθείας κλήσεις μεταξύ δύο προορισμών καλώντας έναν κωδικό λειτουργίας.";
$text['description-call_flows']['es-cl'] = "Llamadas directas entre dos destinatarios llamando a un código distintivo.";
$text['description-call_flows']['es-mx'] = "Llamadas directas entre dos destinatarios llamando a un código distintivo.";
$text['description-call_flows']['fr-ca'] = "Appels directs entre deux destinations en appelant une fonction.";
@@ -678,6 +706,7 @@ $text['description-call_flow_alternate_label']['ar-eg'] = "أدخل تسمية
$text['description-call_flow_alternate_label']['de-at'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['de-ch'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['de-de'] = "Geben Sie eine Beschreibung für das alternative Ziel ein.";
$text['description-call_flow_alternate_label']['el-gr'] = "Εισαγάγετε την ετικέτα εναλλακτικού προορισμού.";
$text['description-call_flow_alternate_label']['es-cl'] = "Ingrese la etiqueta de destino alternativo.";
$text['description-call_flow_alternate_label']['es-mx'] = "Ingrese la etiqueta de destino alternativo.";
$text['description-call_flow_alternate_label']['fr-ca'] = "Choisir le label de la destination alternative.";
@@ -702,6 +731,7 @@ $text['description-call_flow_alternate_destination']['ar-eg'] = "حدد الوج
$text['description-call_flow_alternate_destination']['de-at'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['de-ch'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['de-de'] = "Wählen Sie ein alternatives Ziel.";
$text['description-call_flow_alternate_destination']['el-gr'] = "Επιλέξτε τον εναλλακτικό προορισμό.";
$text['description-call_flow_alternate_destination']['es-cl'] = "Seleccione el destino alternativo.";
$text['description-call_flow_alternate_destination']['es-mx'] = "Seleccione el destino alternativo.";
$text['description-call_flow_alternate_destination']['fr-ca'] = "Choisir la destination alternative.";
@@ -726,6 +756,7 @@ $text['description-call_flow_sound']['ar-eg'] = "حدد الصوت المراد
$text['description-call_flow_sound']['de-at'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['de-ch'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['de-de'] = "Wählen Sie den zu spielenden Rufton aus, wenn das primäre Ziel ausgewählt ist.";
$text['description-call_flow_sound']['el-gr'] = "Επιλέξτε τον ήχο για αναπαραγωγή όταν η κατάσταση έχει οριστεί στους προορισμούς.";
$text['description-call_flow_sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino.";
$text['description-call_flow_sound']['es-mx'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino.";
$text['description-call_flow_sound']['fr-ca'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination.";
@@ -750,6 +781,7 @@ $text['description-call_flow_alternate_sound']['ar-eg'] = "حدد الصوت ا
$text['description-call_flow_alternate_sound']['de-at'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['de-ch'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['de-de'] = "Wählen Sie den zu spielenden Rufton aus, wenn das alternative Ziel ausgewählt ist.";
$text['description-call_flow_alternate_sound']['el-gr'] = "Επιλέξτε τον ήχο για αναπαραγωγή όταν η κατάσταση έχει οριστεί στον εναλλακτικό προορισμό.";
$text['description-call_flow_alternate_sound']['es-cl'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino alternativo.";
$text['description-call_flow_alternate_sound']['es-mx'] = "Seleccione el sonido a reproducir cuando el estado se establece en el destino alternativo.";
$text['description-call_flow_alternate_sound']['fr-ca'] = "Sélectionnez le son à jouer lorsque l'état est réglé sur la destination alternative.";
@@ -774,6 +806,7 @@ $text['recordings']['ar-eg'] = "التسجيلات";
$text['recordings']['de-at'] = "Aufnahmen";
$text['recordings']['de-ch'] = "Aufnahmen";
$text['recordings']['de-de'] = "Aufnahmen";
$text['recordings']['el-gr'] = "Ηχογραφήσεις";
$text['recordings']['es-cl'] = "grabaciones";
$text['recordings']['es-mx'] = "grabaciones";
$text['recordings']['fr-ca'] = "Enregistrements d'appels";
@@ -798,6 +831,7 @@ $text['miscellaneous']['ar-eg'] = "متنوع";
$text['miscellaneous']['de-at'] = "Sonstiges";
$text['miscellaneous']['de-ch'] = "Sonstiges";
$text['miscellaneous']['de-de'] = "Sonstiges";
$text['miscellaneous']['el-gr'] = "Διάφορα";
$text['miscellaneous']['es-cl'] = "Diverso";
$text['miscellaneous']['es-mx'] = "Diverso";
$text['miscellaneous']['fr-ca'] = "Divers";
@@ -822,6 +856,7 @@ $text['sounds']['ar-eg'] = "اصوات";
$text['sounds']['de-at'] = "Ruftöne";
$text['sounds']['de-ch'] = "Ruftöne";
$text['sounds']['de-de'] = "Ruftöne";
$text['sounds']['el-gr'] = "Ήχοι";
$text['sounds']['es-cl'] = "Sonidos";
$text['sounds']['es-mx'] = "Sonidos";
$text['sounds']['fr-ca'] = "des sons";
+1 -1
View File
@@ -11,7 +11,7 @@
$apps[$x]['menu'][$y]['title']['es-mx'] = "Call Flows";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Circulation d'Appel";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "cinématiques d'Appel";
$apps[$x]['menu'][$y]['title']['he-il'] = "Call Flows";
$apps[$x]['menu'][$y]['title']['he-il'] = "התקשר זרימות";
$apps[$x]['menu'][$y]['title']['it-it'] = "Deviatori di Chiamata";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Oproep besturing";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Przepływ rozmów";
+220 -179
View File
@@ -121,7 +121,7 @@
//if (empty($dialplan_uuid)) { $msg .= $text['message-required']." ".$text['label-dialplan_uuid']."<br>\n"; }
//if (empty($call_flow_name)) { $msg .= $text['message-required']." ".$text['label-call_flow_name']."<br>\n"; }
if (empty($call_flow_extension)) { $msg .= $text['message-required']." ".$text['label-call_flow_extension']."<br>\n"; }
if (empty($call_flow_feature_code)) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
//if (empty($call_flow_feature_code)) { $msg .= $text['message-required']." ".$text['label-call_flow_feature_code']."<br>\n"; }
//if (empty($call_flow_context)) { $msg .= $text['message-required']." ".$text['label-call_flow_context']."<br>\n"; }
//if (empty($call_flow_status)) { $msg .= $text['message-required']." ".$text['label-call_flow_status']."<br>\n"; }
//if (empty($call_flow_pin_number)) { $msg .= $text['message-required']." ".$text['label-call_flow_pin_number']."<br>\n"; }
@@ -181,13 +181,15 @@
//build the xml dialplan
$dialplan_xml = "<extension name=\"".xml::sanitize($call_flow_name)."\" continue=\"\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_feature)."$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"sleep\" data=\"200\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"feature_code=true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
$dialplan_xml .= " </condition>\n";
if (!empty($call_flow_feature_code)) {
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_feature)."$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"sleep\" data=\"200\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"feature_code=true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
$dialplan_xml .= " </condition>\n";
}
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($destination_extension)."$\">\n";
$dialplan_xml .= " <action application=\"set\" data=\"call_flow_uuid=".xml::sanitize($call_flow_uuid)."\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"call_flow.lua\"/>\n";
@@ -254,9 +256,10 @@
$p->delete("dialplan_edit", "temp");
// Update subscribed endpoints
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
//send the event
if (!empty($call_flow_feature_code)) {
$esl = event_socket::create();
if ($esl->is_connected()) {
//send the event
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: flow\n";
$event .= "event_type: presence\n";
@@ -271,11 +274,8 @@
} else {
$event .= "answer-state: terminated\n";
}
event_socket_request($fp, $event);
//echo $event."<br />";
fclose($fp);
event_socket::command($event);
}
}
//debug info
@@ -367,151 +367,9 @@
//set the defaults
if (empty($call_flow_enabled)) { $call_flow_enabled = 'true'; }
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by recording_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$recordings = $database->select($sql, $parameters, 'all');
unset($parameters, $sql);
if (if_group("superadmin")) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
//echo " tb.setAttribute('style', 'width: 380px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
}
function sound_select_list($var, $name, $description_name, $load_sound=false) {
global $text, $recordings, $db;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-' . $description_name]."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo "<select name='".escape($name)."' class='formfld' ".((if_group("superadmin")) ? "onchange='changeToInput(this);'" : null).">\n";
echo " <option value=''></option>\n";
//misc optgroup
if (if_group("superadmin")) {
echo "<optgroup label=".$text['miscellaneous'].">\n";
echo " <option value='say:'>say:</option>\n";
echo " <option value='tone_stream:'>tone_stream:</option>\n";
echo "</optgroup>\n";
}
//recordings
$tmp_selected = false;
if (!empty($recordings)) {
echo "<optgroup label=".$text['recordings'].">\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
if ($var == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$recording_filename && !empty($var)) {
$tmp_selected = true;
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else if ($var == $recording_filename && !empty($var)) {
$tmp_selected = true;
echo " <option value='".escape($recording_filename)."' selected='selected'>".escape($recording_name)."</option>\n";
}
else {
echo " <option value='".escape($recording_filename)."'>".escape($recording_name)."</option>\n";
}
}
echo "</optgroup>\n";
}
//phrases
$sql = "select * from v_phrases where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
unset($parameters, $sql);
if (!empty($result)) {
echo "<optgroup label='Phrases'>\n";
foreach ($result as &$row) {
if ($var == "phrase:".$row["phrase_uuid"]) {
$tmp_selected = true;
echo " <option value='phrase:".escape($row["phrase_uuid"])."' selected='selected'>".escape($row["phrase_name"])."</option>\n";
}
else {
echo " <option value='phrase:".escape($row["phrase_uuid"])."'>".escape($row["phrase_name"])."</option>\n";
}
}
echo "</optgroup>\n";
}
//sounds
if ($load_sound) {
$file = new file;
$sound_files = $file->sounds();
if (!empty($sound_files)) {
echo "<optgroup label=".$text["sounds"].">\n";
foreach ($sound_files as $value) {
if (!empty($value)) {
if (substr($var, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
$var = substr($var, 71);
}
if ($var == $value) {
$tmp_selected = true;
echo " <option value='".escape($value)."' selected='selected'>".escape($value)."</option>\n";
}
else {
echo " <option value='".escape($value)."'>".escape($value)."</option>\n";
}
}
}
echo "</optgroup>\n";
}
}
//select
if (if_group("superadmin")) {
if (!$tmp_selected && !empty($var)) {
echo "<optgroup label='Selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$var)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
else if (substr($var, -3) == "wav" || substr($var, -3) == "mp3") {
echo " <option value='".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
else {
echo " <option value='".escape($var)."' selected='selected'>".escape($var)."</option>\n";
}
echo "</optgroup>\n";
}
unset($tmp_selected);
}
echo " </select>\n";
echo " <br />\n";
echo $text['description-' . $description_name]."\n";
echo "</td>\n";
echo "</tr>\n";
}
//get the sounds
$sounds = new sounds;
$audio_files = $sounds->get();
//create token
$object = new token;
@@ -522,6 +380,73 @@
require_once "resources/header.php";
//show the content
if (permission_exists('recording_play') || permission_exists('recording_download')) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " function set_playable(id, audio_selected, audio_type) {\n";
echo " file_ext = audio_selected.split('.').pop();\n";
echo " var mime_type = '';\n";
echo " switch (file_ext) {\n";
echo " case 'wav': mime_type = 'audio/wav'; break;\n";
echo " case 'mp3': mime_type = 'audio/mpeg'; break;\n";
echo " case 'ogg': mime_type = 'audio/ogg'; break;\n";
echo " }\n";
echo " if (mime_type != '' && (audio_type == 'recordings' || audio_type == 'sounds')) {\n";
echo " if (audio_type == 'recordings') {\n";
echo " $('#recording_audio_' + id).attr('src', '../recordings/recordings.php?action=download&type=rec&filename=' + audio_selected);\n";
echo " }\n";
echo " else if (audio_type == 'sounds') {\n";
echo " $('#recording_audio_' + id).attr('src', '../switch/sounds.php?action=download&filename=' + audio_selected);\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('type', mime_type);\n";
echo " $('#recording_button_' + id).show();\n";
echo " }\n";
echo " else {\n";
echo " $('#recording_button_' + id).hide();\n";
echo " $('#recording_audio_' + id).attr('src','').attr('type','');\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
}
if (if_group("superadmin")) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " var objs;\n";
echo " function toggle_select_input(obj, instance_id){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.className='formfld';\n";
echo " tb.setAttribute('id', instance_id);\n";
echo " tb.setAttribute('style', 'width: ' + obj.offsetWidth + 'px;');\n";
if (!empty($on_change)) {
echo " tb.setAttribute('onchange', \"".$on_change."\");\n";
echo " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'none';\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ replace_element(this.objs, instance_id); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo " replace_element(this.objs, instance_id);\n";
echo " }\n";
echo " function replace_element(obj, instance_id){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'inline';\n";
if (!empty($on_change)) {
echo " ".$on_change.";\n";
}
echo " }\n";
echo "</script>\n";
}
echo "<form name='frm' id='frm' method='post'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
@@ -558,7 +483,7 @@
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_feature_code']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
@@ -635,20 +560,78 @@
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_sound, 'call_flow_sound', 'call_flow_sound', true);
/*
$instance_id = 'call_flow_sound';
$instance_label = 'call_flow_sound';
$instance_value = $call_flow_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_sound' maxlength='255' value=\"".escape($call_flow_sound)."\">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files) && is_array($audio_files) && @sizeof($audio_files) != 0) {
foreach ($audio_files as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && !empty($playable)) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."')"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-call_flow_sound']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
*/
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
@@ -679,23 +662,81 @@
echo "</td>\n";
echo "</tr>\n";
sound_select_list($call_flow_alternate_sound, 'call_flow_alternate_sound', 'call_flow_alternate_sound', true);
/*
$instance_id = 'call_flow_alternate_sound';
$instance_label = 'call_flow_alternate_sound';
$instance_value = $call_flow_alternate_sound;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_alternate_sound']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='call_flow_alternate_sound' maxlength='255' value=\"".escape($call_flow_alternate_sound)."\">\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files) && is_array($audio_files) && @sizeof($audio_files) != 0) {
foreach ($audio_files as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
unset($selected);
}
}
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."')"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-call_flow_alternate_sound']."\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
*/
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-call_flow_alternate_destination']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
+2 -1
View File
@@ -89,6 +89,7 @@
//get variables used to control the order
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'call_flow_extension' ? 'natural' : null;
//add the search term
$search = strtolower($search ?? '');
@@ -131,7 +132,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql ?? '');
$sql .= order_by($order_by, $order, 'call_flow_name', 'asc');
$sql .= order_by($order_by, $order, 'call_flow_name', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$call_flows = $database->select($sql, $parameters ?? null, 'all');
@@ -281,8 +281,7 @@ if (!class_exists('call_flows')) {
}
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
$switch_result = event_socket::command($cmd);
}
}
unset($call_flows);
-31
View File
@@ -1,31 +0,0 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
}
?>
+51 -4
View File
@@ -6,6 +6,7 @@ $text['title-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['title-call_forward']['de-at'] = "Rufumleitung";
$text['title-call_forward']['de-ch'] = "Rufumleitung";
$text['title-call_forward']['de-de'] = "Rufumleitung";
$text['title-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['title-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['title-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['title-call_forward']['fr-ca'] = "Renvoi d'appel";
@@ -30,6 +31,7 @@ $text['header-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['header-call_forward']['de-at'] = "Rufumleitung";
$text['header-call_forward']['de-ch'] = "Rufumleitung";
$text['header-call_forward']['de-de'] = "Rufumleitung";
$text['header-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['header-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['header-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['header-call_forward']['fr-ca'] = "Renvoi d'appel";
@@ -54,6 +56,7 @@ $text['table-tools']['ar-eg'] = "أدوات";
$text['table-tools']['de-at'] = "Funktionen";
$text['table-tools']['de-ch'] = "Funktionen";
$text['table-tools']['de-de'] = "Funktionen";
$text['table-tools']['el-gr'] = "Εργαλεία";
$text['table-tools']['es-cl'] = "Herramientas";
$text['table-tools']['es-mx'] = "Herramientas";
$text['table-tools']['fr-ca'] = "Outils";
@@ -78,6 +81,7 @@ $text['table-extension']['ar-eg'] = "امتداد";
$text['table-extension']['de-at'] = "Nebenstelle";
$text['table-extension']['de-ch'] = "Nebenstelle";
$text['table-extension']['de-de'] = "Nebenstelle";
$text['table-extension']['el-gr'] = "Επέκταση";
$text['table-extension']['es-cl'] = "Extensión";
$text['table-extension']['es-mx'] = "Extensión";
$text['table-extension']['fr-ca'] = "Extension";
@@ -102,6 +106,7 @@ $text['table-description']['ar-eg'] = "وصف";
$text['table-description']['de-at'] = "Beschreibung";
$text['table-description']['de-ch'] = "Beschreibung";
$text['table-description']['de-de'] = "Beschreibung";
$text['table-description']['el-gr'] = "Περιγραφή";
$text['table-description']['es-cl'] = "Descripción";
$text['table-description']['es-mx'] = "Descripción";
$text['table-description']['fr-ca'] = "Description";
@@ -126,6 +131,7 @@ $text['label-ring-timeout']['ar-eg'] = "نفذ الوقت";
$text['label-ring-timeout']['de-at'] = "Abwurfzeit";
$text['label-ring-timeout']['de-ch'] = "Abwurfzeit";
$text['label-ring-timeout']['de-de'] = "Abwurfzeit";
$text['label-ring-timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-ring-timeout']['es-cl'] = "Timeout";
$text['label-ring-timeout']['es-mx'] = "Timeout";
$text['label-ring-timeout']['fr-ca'] = "Timeout";
@@ -150,6 +156,7 @@ $text['label-ring-order']['ar-eg'] = "ترتيب الطوق";
$text['label-ring-order']['de-at'] = "Ruf Reihenfolge";
$text['label-ring-order']['de-ch'] = "Ruf Reihenfolge";
$text['label-ring-order']['de-de'] = "Ruf Reihenfolge";
$text['label-ring-order']['el-gr'] = "Παραγγελία δαχτυλιδιού";
$text['label-ring-order']['es-cl'] = "Solicitar Llamado";
$text['label-ring-order']['es-mx'] = "Solicitar Llamado";
$text['label-ring-order']['fr-ca'] = "Ordre de sonnerie";
@@ -174,6 +181,7 @@ $text['label-ring-delay']['ar-eg'] = "تأخير";
$text['label-ring-delay']['de-at'] = "Verzögerung";
$text['label-ring-delay']['de-ch'] = "Verzögerung";
$text['label-ring-delay']['de-de'] = "Verzögerung";
$text['label-ring-delay']['el-gr'] = "Καθυστέρηση";
$text['label-ring-delay']['es-cl'] = "Retardo";
$text['label-ring-delay']['es-mx'] = "Retardo";
$text['label-ring-delay']['fr-ca'] = "Délais";
@@ -198,6 +206,7 @@ $text['label-prompt']['ar-eg'] = "موجه لقبول المكالمة";
$text['label-prompt']['de-at'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['de-ch'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['de-de'] = "Ansage um den Anruf anzunehmen";
$text['label-prompt']['el-gr'] = "Προτροπή για αποδοχή της κλήσης";
$text['label-prompt']['es-cl'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['es-mx'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['fr-ca'] = "Annonce pour accepter l'appel";
@@ -222,6 +231,7 @@ $text['label-on-busy']['ar-eg'] = "مشغول";
$text['label-on-busy']['de-at'] = "Bei Besetzt";
$text['label-on-busy']['de-ch'] = "Bei Besetzt";
$text['label-on-busy']['de-de'] = "Bei Besetzt";
$text['label-on-busy']['el-gr'] = "Απασχολημένος";
$text['label-on-busy']['es-cl'] = "Concurrida";
$text['label-on-busy']['es-mx'] = "Concurrida";
$text['label-on-busy']['fr-ca'] = "Sur Occupé";
@@ -246,6 +256,7 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Αριθμός";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
@@ -270,6 +281,7 @@ $text['label-no_answer']['ar-eg'] = "لا اجابة";
$text['label-no_answer']['de-at'] = "Keine Antwort";
$text['label-no_answer']['de-ch'] = "Keine Antwort";
$text['label-no_answer']['de-de'] = "Keine Antwort";
$text['label-no_answer']['el-gr'] = "Καμία απάντηση";
$text['label-no_answer']['es-cl'] = "Sin Respuesta";
$text['label-no_answer']['es-mx'] = "Sin Respuesta";
$text['label-no_answer']['fr-ca'] = "Pas de réponse";
@@ -294,6 +306,7 @@ $text['label-not_registered']['ar-eg'] = "غير مسجل";
$text['label-not_registered']['de-at'] = "Nicht registriert";
$text['label-not_registered']['de-ch'] = "Nicht registriert";
$text['label-not_registered']['de-de'] = "Nicht registriert";
$text['label-not_registered']['el-gr'] = "Μη εγγεγραμμένο";
$text['label-not_registered']['es-cl'] = "No registrado";
$text['label-not_registered']['es-mx'] = "No registrado";
$text['label-not_registered']['fr-ca'] = "Non enregistré";
@@ -318,6 +331,7 @@ $text['label-ignore_busy']['ar-eg'] = "تجاهل مشغول";
$text['label-ignore_busy']['de-at'] = "Besetzt ignorieren";
$text['label-ignore_busy']['de-ch'] = "Besetzt ignorieren";
$text['label-ignore_busy']['de-de'] = "Besetzt ignorieren";
$text['label-ignore_busy']['el-gr'] = "Αγνοήστε Απασχολημένος";
$text['label-ignore_busy']['es-cl'] = "Ignorar ocupado";
$text['label-ignore_busy']['es-mx'] = "Ignorar ocupado";
$text['label-ignore_busy']['fr-ca'] = "Ignorer occupé";
@@ -342,6 +356,7 @@ $text['label-follow_me']['ar-eg'] = "اتبعني";
$text['label-follow_me']['de-at'] = "Anrufweiterschaltung";
$text['label-follow_me']['de-ch'] = "Anrufweiterschaltung";
$text['label-follow_me']['de-de'] = "Anrufweiterschaltung";
$text['label-follow_me']['el-gr'] = "Ακολούθησέ με";
$text['label-follow_me']['es-cl'] = "Sígueme";
$text['label-follow_me']['es-mx'] = "Sígueme";
$text['label-follow_me']['fr-ca'] = "Suis moi";
@@ -366,6 +381,7 @@ $text['label-dnd']['ar-eg'] = "لا تخل";
$text['label-dnd']['de-at'] = "Bitte nicht stören";
$text['label-dnd']['de-ch'] = "Bitte nicht stören";
$text['label-dnd']['de-de'] = "Bitte nicht stören";
$text['label-dnd']['el-gr'] = "Μην ενοχλείτε";
$text['label-dnd']['es-cl'] = "No Molestar";
$text['label-dnd']['es-mx'] = "No Molestar";
$text['label-dnd']['fr-ca'] = "Ne pas déranger";
@@ -390,6 +406,7 @@ $text['label-destinations']['ar-eg'] = "الأماكن";
$text['label-destinations']['de-at'] = "Ziele";
$text['label-destinations']['de-ch'] = "Ziele";
$text['label-destinations']['de-de'] = "Ziele";
$text['label-destinations']['el-gr'] = "Προορισμοί";
$text['label-destinations']['es-cl'] = "Destinos";
$text['label-destinations']['es-mx'] = "Destinos";
$text['label-destinations']['fr-ca'] = "Destinations";
@@ -414,6 +431,7 @@ $text['label-destination_timeout']['ar-eg'] = "نفذ الوقت";
$text['label-destination_timeout']['de-at'] = "Abwurfzeit";
$text['label-destination_timeout']['de-ch'] = "Abwurfzeit";
$text['label-destination_timeout']['de-de'] = "Abwurfzeit";
$text['label-destination_timeout']['el-gr'] = "Τέλος χρόνου";
$text['label-destination_timeout']['es-cl'] = "Se acabó el tiempo";
$text['label-destination_timeout']['es-mx'] = "Se acabó el tiempo";
$text['label-destination_timeout']['fr-ca'] = "Temps libre";
@@ -438,6 +456,7 @@ $text['label-destination_prompt_confirm']['ar-eg'] = "يتأكد";
$text['label-destination_prompt_confirm']['de-at'] = "Bestätigen";
$text['label-destination_prompt_confirm']['de-ch'] = "Bestätigen";
$text['label-destination_prompt_confirm']['de-de'] = "Bestätigen";
$text['label-destination_prompt_confirm']['el-gr'] = "Επιβεβαιώνω";
$text['label-destination_prompt_confirm']['es-cl'] = "Confirmar";
$text['label-destination_prompt_confirm']['es-mx'] = "Confirmar";
$text['label-destination_prompt_confirm']['fr-ca'] = "Confirmer";
@@ -462,6 +481,7 @@ $text['label-destination_prompt_announce']['ar-eg'] = "أعلن";
$text['label-destination_prompt_announce']['de-at'] = "Ankündigen";
$text['label-destination_prompt_announce']['de-ch'] = "Ankündigen";
$text['label-destination_prompt_announce']['de-de'] = "Ankündigen";
$text['label-destination_prompt_announce']['el-gr'] = "Ανακοινώνω";
$text['label-destination_prompt_announce']['es-cl'] = "Anunciar";
$text['label-destination_prompt_announce']['es-mx'] = "Anunciar";
$text['label-destination_prompt_announce']['fr-ca'] = "Annonce";
@@ -486,6 +506,7 @@ $text['label-destination_prompt']['ar-eg'] = "اِسْتَدْعَى";
$text['label-destination_prompt']['de-at'] = "Nachfragen";
$text['label-destination_prompt']['de-ch'] = "Nachfragen";
$text['label-destination_prompt']['de-de'] = "Nachfragen";
$text['label-destination_prompt']['el-gr'] = "Προτροπή";
$text['label-destination_prompt']['es-cl'] = "Prompt";
$text['label-destination_prompt']['es-mx'] = "Prompt";
$text['label-destination_prompt']['fr-ca'] = "Prompt";
@@ -510,6 +531,7 @@ $text['label-destination_number']['ar-eg'] = "وجهة";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_number']['de-ch'] = "Ziel";
$text['label-destination_number']['de-de'] = "Ziel";
$text['label-destination_number']['el-gr'] = "Προορισμός";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['es-mx'] = "Destino";
$text['label-destination_number']['fr-ca'] = "Destination";
@@ -534,6 +556,7 @@ $text['label-destination_delay']['ar-eg'] = "تأخير";
$text['label-destination_delay']['de-at'] = "Verzögerung";
$text['label-destination_delay']['de-ch'] = "Verzögerung";
$text['label-destination_delay']['de-de'] = "Verzögerung";
$text['label-destination_delay']['el-gr'] = "Καθυστέρηση";
$text['label-destination_delay']['es-cl'] = "Retraso";
$text['label-destination_delay']['es-mx'] = "Retraso";
$text['label-destination_delay']['fr-ca'] = "Délais";
@@ -558,6 +581,7 @@ $text['label-destination']['ar-eg'] = "وجهة";
$text['label-destination']['de-at'] = "Ziel";
$text['label-destination']['de-ch'] = "Ziel";
$text['label-destination']['de-de'] = "Ziel";
$text['label-destination']['el-gr'] = "Προορισμός";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['es-mx'] = "Destino";
$text['label-destination']['fr-ca'] = "Destination";
@@ -582,6 +606,7 @@ $text['label-cid-number-prefix']['ar-eg'] = "بادئة الرقم";
$text['label-cid-number-prefix']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['de-de'] = "Anruferkennung (Nummer)";
$text['label-cid-number-prefix']['el-gr'] = "Πρόθεμα αριθμού";
$text['label-cid-number-prefix']['es-cl'] = "Número de Caller ID";
$text['label-cid-number-prefix']['es-mx'] = "Número de Caller ID";
$text['label-cid-number-prefix']['fr-ca'] = "CID Nombre Préfixe";
@@ -606,6 +631,7 @@ $text['label-cid-number']['ar-eg'] = "رقم هوية المتصل";
$text['label-cid-number']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['de-de'] = "Anruferkennung (Nummer)";
$text['label-cid-number']['el-gr'] = "Αριθμός αναγνώρισης καλούντος";
$text['label-cid-number']['es-cl'] = "Número de Caller ID";
$text['label-cid-number']['es-mx'] = "Número de Caller ID";
$text['label-cid-number']['fr-ca'] = "CID Nombre Préfixe";
@@ -630,6 +656,7 @@ $text['label-cid-name-prefix']['ar-eg'] = "الأسم الأول";
$text['label-cid-name-prefix']['de-at'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['de-ch'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['de-de'] = "Anruferkennung (Name)";
$text['label-cid-name-prefix']['el-gr'] = "Πρόθεμα ονόματος";
$text['label-cid-name-prefix']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['es-mx'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['fr-ca'] = "Préfixe de l'appelant";
@@ -654,6 +681,7 @@ $text['label-call-prompt']['ar-eg'] = "موجه الاتصال";
$text['label-call-prompt']['de-at'] = "Nachfragen";
$text['label-call-prompt']['de-ch'] = "Nachfragen";
$text['label-call-prompt']['de-de'] = "Nachfragen";
$text['label-call-prompt']['el-gr'] = "Προτροπή κλήσης";
$text['label-call-prompt']['es-cl'] = "Aviso de Llamadas";
$text['label-call-prompt']['es-mx'] = "Aviso de Llamadas";
$text['label-call-prompt']['fr-ca'] = "Annonce d'appel";
@@ -678,6 +706,7 @@ $text['label-call_forward']['ar-eg'] = "دعوة إلى الأمام";
$text['label-call_forward']['de-at'] = "Rufumleitung";
$text['label-call_forward']['de-ch'] = "Rufumleitung";
$text['label-call_forward']['de-de'] = "Rufumleitung";
$text['label-call_forward']['el-gr'] = "Προώθηση κλήσης";
$text['label-call_forward']['es-cl'] = "Reenvio de Llamadas";
$text['label-call_forward']['es-mx'] = "Reenvio de Llamadas";
$text['label-call_forward']['fr-ca'] = "Renvoi d'appel";
@@ -703,6 +732,7 @@ $text['label-active']['de-at'] = "Aktiv";
$text['label-active']['de-ch'] = "Aktiv";
$text['label-active']['de-de'] = "Aktiv";
$text['label-active']['el-gr'] = "Ενεργός";
$text['label-active']['el-gr'] = "Ενεργός";
$text['label-active']['es-cl'] = "Activo";
$text['label-active']['es-mx'] = "Activo";
$text['label-active']['fr-ca'] = "Actif";
@@ -727,6 +757,7 @@ $text['description-on-busy']['ar-eg'] = "إذا تم تمكينه ، فإنه ي
$text['description-on-busy']['de-at'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['de-ch'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['de-de'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-on-busy']['el-gr'] = "Εάν είναι ενεργοποιημένο, παρακάμπτει την τιμή της ενεργοποίησης του τηλεφωνητή στην επέκταση.";
$text['description-on-busy']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['es-mx'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['fr-ca'] = "Remplace la messagerie vocale si activé.";
@@ -739,7 +770,7 @@ $text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correi
$text['description-on-busy']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-on-busy']['ro-ro'] = "Dacă este activată, suprascrie valoarea de activare a mesageriei vocale în extensie.";
$text['description-on-busy']['ru-ru'] = "Если включено, этот параметр переопределяет голосовую почту в настройках внутренного номера";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen.";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så åsidosätter den röstbrevlådan för anknytningen.";
$text['description-on-busy']['uk-ua'] = "Якщо цей параметр включений, то вона перекриває значення голосової пошти, що дозволяє в розширенні.";
$text['description-on-busy']['zh-cn'] = "如果启用,它会覆盖分机中启用语音邮件的值。";
$text['description-on-busy']['ja-jp'] = "有効にすると、内線番号で有効になっているボイスメールの値が上書きされます。";
@@ -751,6 +782,7 @@ $text['description-no_answer']['ar-eg'] = "إذا تم تمكينه ، فإنه
$text['description-no_answer']['de-at'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['de-ch'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['de-de'] = "Falls aktiviert, wird die aktive Mailbox der Nebenstelle überschrieben.";
$text['description-no_answer']['el-gr'] = "Εάν είναι ενεργοποιημένο, παρακάμπτει την τιμή της ενεργοποίησης του τηλεφωνητή στην επέκταση.";
$text['description-no_answer']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['es-mx'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['fr-ca'] = "Remplace la messagerie vocale si activé.";
@@ -763,7 +795,7 @@ $text['description-no_answer']['pt-br'] = "Se ativado, substitui o valor do corr
$text['description-no_answer']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-no_answer']['ro-ro'] = "Dacă este activată, suprascrie valoarea de activare a mesageriei vocale în extensie.";
$text['description-no_answer']['ru-ru'] = "Если включено, этот параметр переопределяет голосовую почту в настройках внутренного номера.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så åsidosätter den röstbrevlådan för anknytningen.";
$text['description-no_answer']['uk-ua'] = "Якщо цей параметр включений, то вона перекриває значення голосової пошти, що дозволяє в розширенні.";
$text['description-no_answer']['zh-cn'] = "如果启用,它会覆盖分机中启用语音邮件的值。";
$text['description-no_answer']['ja-jp'] = "有効にすると、内線番号で有効になっているボイスメールの値が上書きされます。";
@@ -775,6 +807,7 @@ $text['description-not_registered']['ar-eg'] = "إذا كانت نقطة الن
$text['description-not_registered']['de-at'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['de-ch'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['de-de'] = "Rufweiterleitung an neues Ziel, wenn ursprüngliches Ziel nicht erreichbar ist, bevor die Mailbox aktiviert wird.";
$text['description-not_registered']['el-gr'] = "Εάν το τελικό σημείο δεν είναι προσβάσιμο, προωθήστε τον σε αυτόν τον προορισμό πριν μεταβείτε στον τηλεφωνητή.";
$text['description-not_registered']['es-cl'] = "Si el punto extremo no es alcanzable, remitir a este destino antes de ir al correo de voz.";
$text['description-not_registered']['es-mx'] = "Si el punto extremo no es alcanzable, remitir a este destino antes de ir al correo de voz.";
$text['description-not_registered']['fr-ca'] = "Si extrémité est pas accessible, transmettre à cette destination avant d'aller à la messagerie vocale.";
@@ -787,7 +820,7 @@ $text['description-not_registered']['pt-br'] = "Se o destino não for alcançáv
$text['description-not_registered']['pt-pt'] = "Se endpoint não está acessível, encaminhar para este destino antes de ir para a caixa postal.";
$text['description-not_registered']['ro-ro'] = "Dacă punctul final nu este accesibil, redirecționați către această destinație înainte de a merge la mesageria vocală.";
$text['description-not_registered']['ru-ru'] = "Если номер недоступен, переадресовать на это направление до голосовой почты.";
$text['description-not_registered']['sv-se'] = "Om endpoint är inte nås, vidarebefordra till denna destination innan du går till röstbrevlådan.";
$text['description-not_registered']['sv-se'] = "Om enheten är inte nås, vidarebefordra till denna destination innan det går till röstbrevlådan.";
$text['description-not_registered']['uk-ua'] = "Якщо кінцева точка не можна досягти, вперед до цієї мети, перш ніж йти на голосову пошту.";
$text['description-not_registered']['zh-cn'] = "如果无法访问端点,请在转到语音邮件之前转发到此目的地。";
$text['description-not_registered']['ja-jp'] = "エンドポイントに到達できない場合は、ボイスメールに移動する前にこの宛先に転送します。";
@@ -799,6 +832,7 @@ $text['description-ignore_busy']['ar-eg'] = "مقاطعة المكالمة إذ
$text['description-ignore_busy']['de-at'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['de-ch'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['de-de'] = "Anruf unterbrechen wenn ein Ziel besetzt ist.";
$text['description-ignore_busy']['el-gr'] = "Διακόψτε την κλήση εάν ένας προορισμός είναι απασχολημένος.";
$text['description-ignore_busy']['es-cl'] = "Interrumpir la llamada si un destino está ocupado.";
$text['description-ignore_busy']['es-mx'] = "Interrumpir la llamada si un destino está ocupado.";
$text['description-ignore_busy']['fr-ca'] = "Interrompez l'appel si une destination est occupé.";
@@ -823,6 +857,7 @@ $text['description-cid-number-prefix']['ar-eg'] = "قم بتعيين بادئة
$text['description-cid-number-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['de-ch'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['de-de'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-number-prefix']['el-gr'] = "Ορίστε το πρόθεμα του αριθμού αναγνώρισης καλούντος.";
$text['description-cid-number-prefix']['es-cl'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['es-mx'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['fr-ca'] = "Définir un préfixe sur le nombre d'ID d'appelant.";
@@ -847,6 +882,7 @@ $text['description-cid-number']['ar-eg'] = "حدد رقمًا لتجاوز رق
$text['description-cid-number']['de-at'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['de-ch'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['de-de'] = "Wählen Sie eine Nummer mit der die ursprüngliche Anrufer-ID-Nummer überschreiben werden soll.";
$text['description-cid-number']['el-gr'] = "Επιλέξτε έναν αριθμό για να αντικαταστήσετε τον αρχικό αριθμό αναγνώρισης καλούντος.";
$text['description-cid-number']['es-cl'] = "Seleccionar un número para anular el número de ID de llamada original.";
$text['description-cid-number']['es-mx'] = "Seleccionar un número para anular el número de ID de llamada original.";
$text['description-cid-number']['fr-ca'] = "Sélectionnez un numéro pour remplacer le numéro d'origine identification de l'appelant.";
@@ -871,6 +907,7 @@ $text['description-cid-name-prefix']['ar-eg'] = "قم بتعيين بادئة ا
$text['description-cid-name-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['de-ch'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['de-de'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-cid-name-prefix']['el-gr'] = "Ορίστε το πρόθεμα ονόματος καλούντος.";
$text['description-cid-name-prefix']['es-cl'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['es-mx'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['fr-ca'] = "Choisir le péfixe du nom d'appelant.";
@@ -895,6 +932,7 @@ $text['description-call-prompt']['ar-eg'] = "موجه لقبول المكالم
$text['description-call-prompt']['de-at'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['de-ch'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['de-de'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call-prompt']['el-gr'] = "Προτροπή για αποδοχή της κλήσης για εξωτερικούς προορισμούς.";
$text['description-call-prompt']['es-cl'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['es-mx'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['fr-ca'] = "Annonce pour accepter l'appel venant de destinations externes.";
@@ -919,6 +957,7 @@ $text['description-call_routing']['ar-eg'] = "حدد معالجة بديلة ل
$text['description-call_routing']['de-at'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['de-ch'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['de-de'] = "Definieren Sie eine alternative Handhabung von eingehenden Anrufen für nachfolgende Nebenstellen.";
$text['description-call_routing']['el-gr'] = "Ορίστε εναλλακτικό χειρισμό εισερχόμενων κλήσεων για τις ακόλουθες επεκτάσεις.";
$text['description-call_routing']['es-cl'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['es-mx'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['fr-ca'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
@@ -931,7 +970,7 @@ $text['description-call_routing']['pt-br'] = "Defina o tratamento de entradas al
$text['description-call_routing']['pt-pt'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['ro-ro'] = "Definiți gestionarea alternativă a apelurilor de intrare pentru următoarele extensii.";
$text['description-call_routing']['ru-ru'] = "Установливает альтернативный вариант приема входящих для следующих внутренних номеров.";
$text['description-call_routing']['sv-se'] = "Definiera alternativa inkommande samtalshantering för följande tillägg.";
$text['description-call_routing']['sv-se'] = "Definiera alternativ hantering av inkommande samtal för följande anknytningar.";
$text['description-call_routing']['uk-ua'] = "Визначити обробку для наступних розширень альтернативного вхідного дзвінка.";
$text['description-call_routing']['zh-cn'] = "为以下分机定义备用入站呼叫处理。";
$text['description-call_routing']['ja-jp'] = "次の内線番号の代替インバウンド コール処理を定義します。";
@@ -943,6 +982,7 @@ $text['description-call_forward']['ar-eg'] = "إعادة توجيه جميع ا
$text['description-call_forward']['de-at'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['de-ch'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['de-de'] = "Leiten Sie alle Anrufe an das angegebene Ziel.";
$text['description-call_forward']['el-gr'] = "Προώθηση όλων των κλήσεων στον καθορισμένο προορισμό.";
$text['description-call_forward']['es-cl'] = "Desviar todas las llamadas al destino especificado.";
$text['description-call_forward']['es-mx'] = "Desviar todas las llamadas al destino especificado.";
$text['description-call_forward']['fr-ca'] = "Transférer tous les appels vers la destination spécifiée.";
@@ -967,6 +1007,7 @@ $text['description']['ar-eg'] = "يوجه المكالمات الواردة لل
$text['description']['de-at'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['de-ch'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['de-de'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['description']['el-gr'] = "Κατευθύνει τις εισερχόμενες κλήσεις για επέκταση:";
$text['description']['es-cl'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['es-mx'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['fr-ca'] = "Rediriger les appels entrant pour l'extension:";
@@ -991,6 +1032,7 @@ $text['confirm-update']['ar-eg'] = "تحديث كاملة";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-de'] = "Aktualisierung durchgeführt";
$text['confirm-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['es-mx'] = "Actualización Completa";
$text['confirm-update']['fr-ca'] = "Mis à jour";
@@ -1015,6 +1057,7 @@ $text['check-true']['ar-eg'] = "حقيقي";
$text['check-true']['de-at'] = "An";
$text['check-true']['de-ch'] = "An";
$text['check-true']['de-de'] = "An";
$text['check-true']['el-gr'] = "Αληθής";
$text['check-true']['es-cl'] = "Verdadero";
$text['check-true']['es-mx'] = "Verdadero";
$text['check-true']['fr-ca'] = "Oui";
@@ -1039,6 +1082,7 @@ $text['check-simultaneous']['ar-eg'] = "متزامنة";
$text['check-simultaneous']['de-at'] = "gleichzeitig";
$text['check-simultaneous']['de-ch'] = "gleichzeitig";
$text['check-simultaneous']['de-de'] = "gleichzeitig";
$text['check-simultaneous']['el-gr'] = "ταυτόχρονος";
$text['check-simultaneous']['es-cl'] = "simultaneo";
$text['check-simultaneous']['es-mx'] = "simultaneo";
$text['check-simultaneous']['fr-ca'] = "simultanément";
@@ -1063,6 +1107,7 @@ $text['check-sequence']['ar-eg'] = "تسلسل";
$text['check-sequence']['de-at'] = "sequenziell";
$text['check-sequence']['de-ch'] = "sequenziell";
$text['check-sequence']['de-de'] = "sequenziell";
$text['check-sequence']['el-gr'] = "αλληλουχία";
$text['check-sequence']['es-cl'] = "secuencia";
$text['check-sequence']['es-mx'] = "secuencia";
$text['check-sequence']['fr-ca'] = "séquence";
@@ -1087,6 +1132,7 @@ $text['check-false']['ar-eg'] = "خطأ شنيع";
$text['check-false']['de-at'] = "Aus";
$text['check-false']['de-ch'] = "Aus";
$text['check-false']['de-de'] = "Aus";
$text['check-false']['el-gr'] = "Ψευδής";
$text['check-false']['es-cl'] = "Falso";
$text['check-false']['es-mx'] = "Falso";
$text['check-false']['fr-ca'] = "Non";
@@ -1111,6 +1157,7 @@ $text['button-view_all']['ar-eg'] = "مشاهدة الكل";
$text['button-view_all']['de-at'] = "Alle anzeigen";
$text['button-view_all']['de-ch'] = "Alle anzeigen";
$text['button-view_all']['de-de'] = "Alle anzeigen";
$text['button-view_all']['el-gr'] = "Προβολή όλων";
$text['button-view_all']['es-cl'] = "Mostrar Todos";
$text['button-view_all']['es-mx'] = "Mostrar Todos";
$text['button-view_all']['fr-ca'] = "Tout Montrer";
+20 -13
View File
@@ -18,7 +18,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2021
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -36,7 +36,8 @@
//check permissions
if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) {
//access granted
} else {
}
else {
echo "access denied";
exit;
}
@@ -78,8 +79,9 @@
}
//get order and order by
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$order_by = $_GET["order_by"] ?? 'extension';
$order = $_GET["order"] ?? 'asc';
$sort = $order_by == 'extension' ? 'natural' : null;
//get the search
$search = strtolower($_GET["search"] ?? '');
@@ -91,7 +93,8 @@
$sql = "select count(*) from v_extensions ";
if ($show === "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
} else {
}
else {
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
@@ -154,7 +157,8 @@
$sql = "select * from v_extensions ";
if ($show == "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
} else {
}
else {
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
@@ -178,19 +182,20 @@
$x++;
}
$sql .= ")";
} else {
}
else {
//used to hide any results when a user has not been assigned an extension
$sql .= "and extension = 'disabled' ";
}
}
$sql .= order_by($order_by, $order, 'extension', 'asc');
$sql .= order_by($order_by, $order, 'extension', 'asc', $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$extensions = $database->select($sql, $parameters ?? null, 'all');
unset($parameters);
//if there are no extensions then set to empty array
if($extensions === false) {
if ($extensions === false) {
$extensions = [];
}
@@ -200,7 +205,7 @@
//include header
if (!$is_included) {
$document['title'] = $text['title-call_forward'];
$document['title'] = $text['title-call_forward'];
}
require_once "resources/header.php";
@@ -215,7 +220,8 @@
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
} else {
}
else {
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>" . $text['header-call_forward'] . " (" . $num_rows . ")</b></div>\n";
echo " <div class='actions'>\n";
@@ -274,7 +280,8 @@
echo "<th>" . $text['label-domain'] . "</th>\n";
}
}
echo " <th>" . $text['label-extension'] . "</th>\n";
echo th_order_by('extension', $text['label-extension'], $order_by, $order);
// echo " <th>" . $text['label-extension'] . "</th>\n";
if (permission_exists('call_forward')) {
echo " <th>" . $text['label-call_forward'] . "</th>\n";
}
@@ -411,4 +418,4 @@
require_once "resources/footer.php";
}
?>
?>
+3 -7
View File
@@ -399,9 +399,7 @@
$cmd .= "answer-state: confirmed\n";
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
unset($fp);
$switch_result = event_socket::command($cmd);
}
else {
$presence = new presence;
@@ -421,9 +419,7 @@
$cmd .= "answer-state: terminated\n";
//send the event
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_result = event_socket_request($fp, $cmd);
unset($fp);
$switch_result = event_socket::command($cmd);
}
}
}
@@ -548,7 +544,7 @@
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_forward']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'call_forward.php']);
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','onclick'=>'history.back();']);
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
@@ -39,10 +39,10 @@
if ($this->enabled == "true") {
//update the call center status
$user_status = "Logged Out";
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
$switch_cmd .= "callcenter_config agent set status ".$_SESSION['username']."@".$this->domain_name." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
//update the database user_status
@@ -42,11 +42,11 @@
//feature_event method
public function send_notify() {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
// Get the SIP profiles for the extension
$command = "sofia_contact */{$this->extension}@{$this->domain_name}";
$contact_string = event_socket_request($fp, "api ".$command);
$contact_string = event_socket::api($command);
// The first value in the array will be full matching text, the second one will be the array of profile matches
preg_match_all('/sofia\/([^,]+)\/(?:[^,]+)/', $contact_string, $matches);
if (sizeof($matches) != 2 || sizeof($matches[1]) < 1) {
@@ -72,12 +72,11 @@
$event .= "forward_no_answer: " . $this->forward_no_answer_destination . "\n";
$event .= "doNotDisturbOn: " . $this->do_not_disturb . "\n";
$event .= "ringCount: " . $this->ring_count . "\n";
event_socket_request($fp, $event);
event_socket::command($event);
}
fclose($fp);
}
} //function
} //class
?>
@@ -22,23 +22,29 @@
$language = new text;
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_forward');
//extensions link
$extension_link = '#';
if (permission_exists('extension_view')) {
$extension_link = PROJECT_PATH."/app/extensions/extensions.php";
}
$call_forward_link = PROJECT_PATH."/app/call_forward/call_forward.php";
//set the row style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//get data
$sql = "
select
extension_uuid,
extension,
forward_all_enabled,
forward_all_destination,
follow_me_enabled,
follow_me_uuid,
do_not_disturb
from
v_extensions ";
$sql = "select ";
$sql .= "extension_uuid,";
$sql .= "extension, ";
$sql .= "forward_all_enabled, ";
$sql .= "forward_all_destination, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_uuid, ";
$sql .= "do_not_disturb ";
$sql .= "from ";
$sql .= "v_extensions ";
if (!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('call_forward_all')) {
$sql .= "where true ";
}
@@ -181,19 +187,17 @@
echo "<div class='hud_details hud_box' id='hud_call_forward_details'>";
echo "<table class='tr_hover' width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo "<tr style='position: -webkit-sticky; position: sticky; z-index: 5; top: 0;'>\n";
echo "<th class='hud_heading'>".$text['label-extension']."</th>\n";
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;'>".$text['label-call_forward']."</th>\n";
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;'>".$text['label-follow_me']."</th>\n";
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;'>".$text['label-dnd']."</th>\n";
echo " <th class='hud_heading' style='text-align: center;'><a href='".$call_forward_link."'>".$text['label-dnd']."</a></th>\n";
}
echo "</tr>\n";
// data
if (is_array($extensions) && @sizeof($extensions) != 0) {
foreach ($extensions as $row) {
$tr_link = PROJECT_PATH."/app/call_forward/call_forward_edit.php?id=".$row['extension_uuid'];
@@ -233,4 +237,4 @@
echo "<span class='hud_expander' onclick=\"$('#hud_call_forward_details').slideToggle('fast');\"><span class='fas fa-ellipsis-h'></span></span>\n";
echo "</div>\n";
?>
?>
+54 -45
View File
@@ -3,7 +3,7 @@
//check the permission
if (defined('STDIN')) {
//includes files
require_once dirname(__DIR__, 4) . "/resources/require.php";
require_once dirname(__DIR__, 4) . "/resources/require.php";
}
else {
exit;
@@ -31,54 +31,63 @@
exit;
}
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//use global conf created from require.php
global $conf;
//get the list
$sql = "select domain_name, extension, user_context, do_not_disturb, description ";
$sql .= "from v_extensions as e, v_domains as d ";
$sql .= "where do_not_disturb = 'true' ";
$sql .= "and e.domain_uuid = d.domain_uuid ";
$sql .= "and enabled = 'true' ";
$database = new database;
$results = $database->select($sql, $parameters, 'all');
unset($parameters);
//set the event socket connection settings
$host = $conf['switch.event_socket.host'] ?? $conf['event_socket.ip_address'] ?? '127.0.0.1';
$port = $conf['switch.event_socket.port'] ?? $conf['event_socket.port'] ?? '8021';
$pass = $conf['switch.event_socket.password'] ?? $conf['event_socket.password'] ?? 'ClueCon';
//view_array($results);
foreach($results as $row) {
//connect to event socket using a lower timeout because we are on cli
$esl = event_socket::create($host, $port, $pass, 10000);
//build the event
$cmd = "sendevent PRESENCE_IN\n";
$cmd .= "proto: sip\n";
$cmd .= "login: ".$row['extension']."@".$row['domain_name']."\n";
$cmd .= "from: ".$row['extension']."@".$row['domain_name']."\n";
$cmd .= "status: Active (1 waiting)\n";
$cmd .= "rpid: unknown\n";
$cmd .= "event_type: presence\n";
$cmd .= "alt_event_type: dialog\n";
$cmd .= "event_count: 1\n";
$cmd .= "unique-id: ".uuid()."\n";
$cmd .= "Presence-Call-Direction: outbound\n";
$cmd .= "answer-state: confirmed\n";
//$cmd .= "answer-state: early\n";
//$cmd .= "answer-state: terminated\n";
//ensure we are connected
if ($esl->is_connected()) {
//send message to the console
if (isset($debug)) {
echo "\n";
echo "[presence] dnd ".$row['extension']."@".$row['domain_name']."\n";
//get the list
$sql = "select domain_name, extension, user_context, do_not_disturb, description ";
$sql .= "from v_extensions as e, v_domains as d ";
$sql .= "where do_not_disturb = 'true' ";
$sql .= "and e.domain_uuid = d.domain_uuid ";
$sql .= "and enabled = 'true' ";
$database = new database;
$results = $database->select($sql, $parameters, 'all');
unset($parameters);
foreach ($results as $row) {
//build the event
$cmd = "sendevent PRESENCE_IN\n";
$cmd .= "proto: sip\n";
$cmd .= "login: " . $row['extension'] . "@" . $row['domain_name'] . "\n";
$cmd .= "from: " . $row['extension'] . "@" . $row['domain_name'] . "\n";
$cmd .= "status: Active (1 waiting)\n";
$cmd .= "rpid: unknown\n";
$cmd .= "event_type: presence\n";
$cmd .= "alt_event_type: dialog\n";
$cmd .= "event_count: 1\n";
$cmd .= "unique-id: " . uuid() . "\n";
$cmd .= "Presence-Call-Direction: outbound\n";
$cmd .= "answer-state: confirmed\n";
//$cmd .= "answer-state: early\n";
//$cmd .= "answer-state: terminated\n";
//send message to the console
if (isset($debug)) {
echo "\n";
echo "[presence] dnd " . $row['extension'] . "@" . $row['domain_name'] . "\n";
}
//send the event
$result = event_socket::command($cmd);
if (isset($debug)) {
print_r($result, false);
}
}
//send the event
$result = event_socket_request($fp, $cmd);
if (isset($debug)) {
print_r($result, false);
}
}
else {
trigger_error("Unable to connect to FreeSWITCH using $host, $port, $password", E_USER_ERROR);
}
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_forward/resources/jobs/dnd.php
*/
?>
/*
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_forward/resources/jobs/dnd.php
*/
+94 -70
View File
@@ -6,6 +6,7 @@ $text['title-call_recordings']['ar-eg'] = "تسجيلات المكالمات";
$text['title-call_recordings']['de-at'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['de-ch'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['de-de'] = "Anrufaufzeichnungen";
$text['title-call_recordings']['el-gr'] = "Ηχογραφήσεις κλήσεων";
$text['title-call_recordings']['es-cl'] = "Grabaciones de llamadas";
$text['title-call_recordings']['es-mx'] = "Grabaciones de llamadas";
$text['title-call_recordings']['fr-ca'] = "Enregistrements d'appels";
@@ -30,6 +31,7 @@ $text['title-call_recording']['ar-eg'] = "تسجيل المكالمات";
$text['title-call_recording']['de-at'] = "Anrufaufzeichnung";
$text['title-call_recording']['de-ch'] = "Anrufaufzeichnung";
$text['title-call_recording']['de-de'] = "Anrufaufzeichnung";
$text['title-call_recording']['el-gr'] = "Καταγραφή κλήσεων";
$text['title-call_recording']['es-cl'] = "Grabacion de llamada";
$text['title-call_recording']['es-mx'] = "Grabacion de llamada";
$text['title-call_recording']['fr-ca'] = "Enregistrement d'appel";
@@ -54,6 +56,7 @@ $text['title_description-call_recordings']['ar-eg'] = "يظهر تسجيلات
$text['title_description-call_recordings']['de-at'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['de-ch'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['de-de'] = "Zeigt die Anrufaufzeichnungen mit Name, Dauer, Datum und Uhrzeit sowie Anrufrichtung an.";
$text['title_description-call_recordings']['el-gr'] = "Εμφανίζει τις εγγραφές κλήσεων με όνομα, διάρκεια, ημερομηνία και ώρα και κατεύθυνση κλήσης.";
$text['title_description-call_recordings']['es-cl'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
$text['title_description-call_recordings']['es-mx'] = "Muestra las grabaciones de llamadas con nombre, duración, fecha y hora, y dirección de la llamada.";
$text['title_description-call_recordings']['fr-ca'] = "Affiche les enregistrements d'appel avec nom, durée, date et heure, et direction de l'appel";
@@ -78,6 +81,7 @@ $text['label-call_recording_name']['ar-eg'] = "اسم";
$text['label-call_recording_name']['de-at'] = "Name";
$text['label-call_recording_name']['de-ch'] = "Name";
$text['label-call_recording_name']['de-de'] = "Name";
$text['label-call_recording_name']['el-gr'] = "Ονομα";
$text['label-call_recording_name']['es-cl'] = "Nombre";
$text['label-call_recording_name']['es-mx'] = "Nombre";
$text['label-call_recording_name']['fr-ca'] = "Nom";
@@ -102,6 +106,7 @@ $text['label-caller_id_name']['ar-eg'] = "اسم المتصل";
$text['label-caller_id_name']['de-at'] = "Anrufer Name";
$text['label-caller_id_name']['de-ch'] = "Anrufer Name";
$text['label-caller_id_name']['de-de'] = "Anrufer Name";
$text['label-caller_id_name']['el-gr'] = "Όνομα καλούντος";
$text['label-caller_id_name']['es-cl'] = "Nombre CID";
$text['label-caller_id_name']['es-mx'] = "Nombre CID";
$text['label-caller_id_name']['fr-ca'] = "Nom de l'Appelant";
@@ -126,6 +131,7 @@ $text['label-caller_id_number']['ar-eg'] = "رقم المتصل";
$text['label-caller_id_number']['de-at'] = "Anrufer Nummer";
$text['label-caller_id_number']['de-ch'] = "Anrufer Nummer";
$text['label-caller_id_number']['de-de'] = "Anrufer Nummer";
$text['label-caller_id_number']['el-gr'] = "Αριθμός καλούντος";
$text['label-caller_id_number']['es-cl'] = "Número CID";
$text['label-caller_id_number']['es-mx'] = "Número CID";
$text['label-caller_id_number']['fr-ca'] = "Numéro de l'Appelant";
@@ -150,6 +156,7 @@ $text['label-caller_destination']['ar-eg'] = "وجهة المتصل";
$text['label-caller_destination']['de-at'] = "Rufziel";
$text['label-caller_destination']['de-ch'] = "Rufziel";
$text['label-caller_destination']['de-de'] = "Rufziel";
$text['label-caller_destination']['el-gr'] = "Προορισμός καλούντος";
$text['label-caller_destination']['es-cl'] = "Destino de la persona que llama";
$text['label-caller_destination']['es-mx'] = "Destino de la persona que llama";
$text['label-caller_destination']['fr-ca'] = "Destination de l'appelant";
@@ -174,6 +181,7 @@ $text['label-destination_number']['ar-eg'] = "وجهة";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_number']['de-ch'] = "Ziel";
$text['label-destination_number']['de-de'] = "Ziel";
$text['label-destination_number']['el-gr'] = "Προορισμός";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['es-mx'] = "Destino";
$text['label-destination_number']['fr-ca'] = "Destination";
@@ -198,6 +206,7 @@ $text['description-call_recording_name']['ar-eg'] = "اسم تسجيل المك
$text['description-call_recording_name']['de-at'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['de-ch'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['de-de'] = "Name der Anrufaufzeichnung";
$text['description-call_recording_name']['el-gr'] = "Όνομα εγγραφής κλήσης";
$text['description-call_recording_name']['es-cl'] = "Nombre de grabación de llamada";
$text['description-call_recording_name']['es-mx'] = "Nombre de grabación de llamada";
$text['description-call_recording_name']['fr-ca'] = "Nom de l'enregistrement d'appel";
@@ -222,6 +231,7 @@ $text['label-call_recording_path']['ar-eg'] = "طريق";
$text['label-call_recording_path']['de-at'] = "Weg";
$text['label-call_recording_path']['de-ch'] = "Weg";
$text['label-call_recording_path']['de-de'] = "Weg";
$text['label-call_recording_path']['el-gr'] = "Μονοπάτι";
$text['label-call_recording_path']['es-cl'] = "Camino";
$text['label-call_recording_path']['es-mx'] = "Camino";
$text['label-call_recording_path']['fr-ca'] = "Chemin";
@@ -240,29 +250,30 @@ $text['label-call_recording_path']['zh-cn'] = "小路";
$text['label-call_recording_path']['ja-jp'] = "道";
$text['label-call_recording_path']['ko-kr'] = "길";
$text['description-call_recording_path']['en-us'] = "";
$text['description-call_recording_path']['en-gb'] = "";
$text['description-call_recording_path']['ar-eg'] = "";
$text['description-call_recording_path']['de-at'] = "";
$text['description-call_recording_path']['de-ch'] = "";
$text['description-call_recording_path']['de-de'] = "";
$text['description-call_recording_path']['es-cl'] = "";
$text['description-call_recording_path']['es-mx'] = "";
$text['description-call_recording_path']['fr-ca'] = "";
$text['description-call_recording_path']['fr-fr'] = "";
$text['description-call_recording_path']['he-il'] = "";
$text['description-call_recording_path']['it-it'] = "";
$text['description-call_recording_path']['en-us'] = "Conversation recording path";
$text['description-call_recording_path']['en-gb'] = "Conversation recording path";
$text['description-call_recording_path']['ar-eg'] = "مسار تسجيل المحادثة";
$text['description-call_recording_path']['de-at'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['de-ch'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['de-de'] = "Konversationsaufzeichnungspfad";
$text['description-call_recording_path']['el-gr'] = "Διαδρομή εγγραφής συνομιλίας";
$text['description-call_recording_path']['es-cl'] = "Ruta de grabación de conversaciones";
$text['description-call_recording_path']['es-mx'] = "Ruta de grabación de conversaciones";
$text['description-call_recording_path']['fr-ca'] = "Chemin d'enregistrement des conversations";
$text['description-call_recording_path']['fr-fr'] = "Chemin d'enregistrement des conversations";
$text['description-call_recording_path']['he-il'] = "נתיב הקלטת שיחות";
$text['description-call_recording_path']['it-it'] = "Percorso di registrazione della conversazione";
$text['description-call_recording_path']['nl-nl'] = "Gespreksopname pad";
$text['description-call_recording_path']['pl-pl'] = "";
$text['description-call_recording_path']['pt-br'] = "";
$text['description-call_recording_path']['pt-pt'] = "";
$text['description-call_recording_path']['ro-ro'] = "";
$text['description-call_recording_path']['ru-ru'] = "";
$text['description-call_recording_path']['sv-se'] = "";
$text['description-call_recording_path']['uk-ua'] = "";
$text['description-call_recording_path']['zh-cn'] = "";
$text['description-call_recording_path']['ja-jp'] = "";
$text['description-call_recording_path']['ko-kr'] = "";
$text['description-call_recording_path']['pl-pl'] = "Ścieżka nagrywania rozmowy";
$text['description-call_recording_path']['pt-br'] = "Caminho de gravação de conversa";
$text['description-call_recording_path']['pt-pt'] = "Caminho de gravação de conversa";
$text['description-call_recording_path']['ro-ro'] = "Calea de înregistrare a conversației";
$text['description-call_recording_path']['ru-ru'] = "Путь записи разговора";
$text['description-call_recording_path']['sv-se'] = "Konversationsinspelningsväg";
$text['description-call_recording_path']['uk-ua'] = "Шлях запису розмови";
$text['description-call_recording_path']['zh-cn'] = "对话录音路径";
$text['description-call_recording_path']['ja-jp'] = "会話録音パス";
$text['description-call_recording_path']['ko-kr'] = "대화 녹음 경로";
$text['label-call_recording_length']['en-us'] = "Length";
$text['label-call_recording_length']['en-gb'] = "Length";
@@ -270,6 +281,7 @@ $text['label-call_recording_length']['ar-eg'] = "طول";
$text['label-call_recording_length']['de-at'] = "Länge";
$text['label-call_recording_length']['de-ch'] = "Länge";
$text['label-call_recording_length']['de-de'] = "Länge";
$text['label-call_recording_length']['el-gr'] = "Μήκος";
$text['label-call_recording_length']['es-cl'] = "Longitud";
$text['label-call_recording_length']['es-mx'] = "Longitud";
$text['label-call_recording_length']['fr-ca'] = "Longueur";
@@ -294,6 +306,7 @@ $text['description-call_recording_length']['ar-eg'] = "مدة تسجيل الم
$text['description-call_recording_length']['de-at'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['de-ch'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['de-de'] = "Anrufaufzeichnungsdauer";
$text['description-call_recording_length']['el-gr'] = "Διάρκεια εγγραφής κλήσης";
$text['description-call_recording_length']['es-cl'] = "Duración de la grabación de llamadas";
$text['description-call_recording_length']['es-mx'] = "Duración de la grabación de llamadas";
$text['description-call_recording_length']['fr-ca'] = "Durée d'enregistrement des appels";
@@ -318,6 +331,7 @@ $text['label-call_recording_date']['ar-eg'] = "تاريخ";
$text['label-call_recording_date']['de-at'] = "Datum";
$text['label-call_recording_date']['de-ch'] = "Datum";
$text['label-call_recording_date']['de-de'] = "Datum";
$text['label-call_recording_date']['el-gr'] = "Ημερομηνία";
$text['label-call_recording_date']['es-cl'] = "Fecha";
$text['label-call_recording_date']['es-mx'] = "Fecha";
$text['label-call_recording_date']['fr-ca'] = "Date";
@@ -342,6 +356,7 @@ $text['description-call_recording_date']['ar-eg'] = "تاريخ تسجيل ال
$text['description-call_recording_date']['de-at'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['de-ch'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['de-de'] = "Anrufaufzeichnungsdatum";
$text['description-call_recording_date']['el-gr'] = "Ημερομηνία εγγραφής κλήσης";
$text['description-call_recording_date']['es-cl'] = "Fecha de grabación de llamadas";
$text['description-call_recording_date']['es-mx'] = "Fecha de grabación de llamadas";
$text['description-call_recording_date']['fr-ca'] = "Date d'enregistrement de l'appel";
@@ -366,6 +381,7 @@ $text['label-call_direction']['ar-eg'] = "اتجاه";
$text['label-call_direction']['de-at'] = "Richtung";
$text['label-call_direction']['de-ch'] = "Richtung";
$text['label-call_direction']['de-de'] = "Richtung";
$text['label-call_direction']['el-gr'] = "Κατεύθυνση";
$text['label-call_direction']['es-cl'] = "Dirección";
$text['label-call_direction']['es-mx'] = "Dirección";
$text['label-call_direction']['fr-ca'] = "Direction";
@@ -384,29 +400,30 @@ $text['label-call_direction']['zh-cn'] = "方向";
$text['label-call_direction']['ja-jp'] = "方向";
$text['label-call_direction']['ko-kr'] = "방향";
$text['description-call_direction']['en-us'] = "";
$text['description-call_direction']['en-gb'] = "";
$text['description-call_direction']['ar-eg'] = "";
$text['description-call_direction']['de-at'] = "";
$text['description-call_direction']['de-ch'] = "";
$text['description-call_direction']['de-de'] = "";
$text['description-call_direction']['es-cl'] = "";
$text['description-call_direction']['es-mx'] = "";
$text['description-call_direction']['fr-ca'] = "";
$text['description-call_direction']['fr-fr'] = "";
$text['description-call_direction']['he-il'] = "";
$text['description-call_direction']['it-it'] = "";
$text['description-call_direction']['en-us'] = "Call recording call direction";
$text['description-call_direction']['en-gb'] = "Call recording call direction";
$text['description-call_direction']['ar-eg'] = "تسجيل المكالمات اتجاه المكالمة";
$text['description-call_direction']['de-at'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['de-ch'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['de-de'] = "Anrufaufzeichnung, Anrufrichtung";
$text['description-call_direction']['el-gr'] = "Κατεύθυνση κλήσης καταγραφής κλήσης";
$text['description-call_direction']['es-cl'] = "Dirección de llamada de grabación de llamadas.";
$text['description-call_direction']['es-mx'] = "Dirección de llamada de grabación de llamadas.";
$text['description-call_direction']['fr-ca'] = "Direction d'appel d'enregistrement d'appel";
$text['description-call_direction']['fr-fr'] = "Direction d'appel d'enregistrement d'appel";
$text['description-call_direction']['he-il'] = "הקלטת שיחה כיוון שיחה";
$text['description-call_direction']['it-it'] = "Direzione della chiamata per la registrazione delle chiamate";
$text['description-call_direction']['nl-nl'] = "Gespreksopname oproeprichting";
$text['description-call_direction']['pl-pl'] = "";
$text['description-call_direction']['pt-br'] = "";
$text['description-call_direction']['pt-pt'] = "";
$text['description-call_direction']['ro-ro'] = "";
$text['description-call_direction']['ru-ru'] = "";
$text['description-call_direction']['sv-se'] = "";
$text['description-call_direction']['uk-ua'] = "";
$text['description-call_direction']['zh-cn'] = "";
$text['description-call_direction']['ja-jp'] = "";
$text['description-call_direction']['ko-kr'] = "";
$text['description-call_direction']['pl-pl'] = "Nagrywanie połączeń Kierunek połączenia";
$text['description-call_direction']['pt-br'] = "Direção de chamada de gravação de chamada";
$text['description-call_direction']['pt-pt'] = "Direção de chamada de gravação de chamada";
$text['description-call_direction']['ro-ro'] = "Înregistrarea apelului direcția apelului";
$text['description-call_direction']['ru-ru'] = "Запись звонков, направление звонка";
$text['description-call_direction']['sv-se'] = "Samtalsinspelning samtalsriktning";
$text['description-call_direction']['uk-ua'] = "Напрямок виклику запису дзвінка";
$text['description-call_direction']['zh-cn'] = "通话录音 通话方向";
$text['description-call_direction']['ja-jp'] = "通話録音の通話方向";
$text['description-call_direction']['ko-kr'] = "통화 녹음 통화 방향";
$text['label-call_recording_description']['en-us'] = "Description";
$text['label-call_recording_description']['en-gb'] = "Description";
@@ -414,6 +431,7 @@ $text['label-call_recording_description']['ar-eg'] = "وصف";
$text['label-call_recording_description']['de-at'] = "Beschreibung";
$text['label-call_recording_description']['de-ch'] = "Beschreibung";
$text['label-call_recording_description']['de-de'] = "Beschreibung";
$text['label-call_recording_description']['el-gr'] = "Περιγραφή";
$text['label-call_recording_description']['es-cl'] = "Descripción";
$text['label-call_recording_description']['es-mx'] = "Descripción";
$text['label-call_recording_description']['fr-ca'] = "Description";
@@ -432,29 +450,30 @@ $text['label-call_recording_description']['zh-cn'] = "描述";
$text['label-call_recording_description']['ja-jp'] = "説明";
$text['label-call_recording_description']['ko-kr'] = "설명";
$text['description-call_recording_description']['en-us'] = "";
$text['description-call_recording_description']['en-gb'] = "";
$text['description-call_recording_description']['ar-eg'] = "";
$text['description-call_recording_description']['de-at'] = "";
$text['description-call_recording_description']['de-ch'] = "";
$text['description-call_recording_description']['de-de'] = "";
$text['description-call_recording_description']['es-cl'] = "";
$text['description-call_recording_description']['es-mx'] = "";
$text['description-call_recording_description']['fr-ca'] = "";
$text['description-call_recording_description']['fr-fr'] = "";
$text['description-call_recording_description']['he-il'] = "";
$text['description-call_recording_description']['it-it'] = "";
$text['description-call_recording_description']['en-us'] = "Call recording direction";
$text['description-call_recording_description']['en-gb'] = "Call recording direction";
$text['description-call_recording_description']['ar-eg'] = "اتجاه تسجيل المكالمات";
$text['description-call_recording_description']['de-at'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['de-ch'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['de-de'] = "Richtung der Anrufaufzeichnung";
$text['description-call_recording_description']['el-gr'] = "Κατεύθυνση εγγραφής κλήσης";
$text['description-call_recording_description']['es-cl'] = "Dirección de grabación de llamadas";
$text['description-call_recording_description']['es-mx'] = "Dirección de grabación de llamadas";
$text['description-call_recording_description']['fr-ca'] = "Direction d'enregistrement des appels";
$text['description-call_recording_description']['fr-fr'] = "Direction d'enregistrement des appels";
$text['description-call_recording_description']['he-il'] = "כיוון הקלטת שיחות";
$text['description-call_recording_description']['it-it'] = "Direzione di registrazione della chiamata";
$text['description-call_recording_description']['nl-nl'] = "Gespreksopname richting";
$text['description-call_recording_description']['pl-pl'] = "";
$text['description-call_recording_description']['pt-br'] = "";
$text['description-call_recording_description']['pt-pt'] = "";
$text['description-call_recording_description']['ro-ro'] = "";
$text['description-call_recording_description']['ru-ru'] = "";
$text['description-call_recording_description']['sv-se'] = "";
$text['description-call_recording_description']['uk-ua'] = "";
$text['description-call_recording_description']['zh-cn'] = "";
$text['description-call_recording_description']['ja-jp'] = "";
$text['description-call_recording_description']['ko-kr'] = "";
$text['description-call_recording_description']['pl-pl'] = "Kierunek nagrywania połączeń";
$text['description-call_recording_description']['pt-br'] = "Direção de gravação de chamadas";
$text['description-call_recording_description']['pt-pt'] = "Direção de gravação de chamadas";
$text['description-call_recording_description']['ro-ro'] = "Direcția de înregistrare a apelurilor";
$text['description-call_recording_description']['ru-ru'] = "Направление записи звонков";
$text['description-call_recording_description']['sv-se'] = "Riktning för samtalsinspelning";
$text['description-call_recording_description']['uk-ua'] = "Напрямок запису дзвінка";
$text['description-call_recording_description']['zh-cn'] = "通话录音方向";
$text['description-call_recording_description']['ja-jp'] = "通話録音の方向";
$text['description-call_recording_description']['ko-kr'] = "통화 녹음 방향";
$text['label-call_recording_base64']['en-us'] = "Base64";
$text['label-call_recording_base64']['en-gb'] = "Base64";
@@ -462,6 +481,7 @@ $text['label-call_recording_base64']['ar-eg'] = "قاعدة64";
$text['label-call_recording_base64']['de-at'] = "Base64";
$text['label-call_recording_base64']['de-ch'] = "Base64";
$text['label-call_recording_base64']['de-de'] = "Base64";
$text['label-call_recording_base64']['el-gr'] = "Βάση64";
$text['label-call_recording_base64']['es-cl'] = "Base64";
$text['label-call_recording_base64']['es-mx'] = "Base64";
$text['label-call_recording_base64']['fr-ca'] = "Base64";
@@ -486,19 +506,20 @@ $text['description-call_recording_base64']['ar-eg'] = "قاعدة64";
$text['description-call_recording_base64']['de-at'] = "Base64";
$text['description-call_recording_base64']['de-ch'] = "Base64";
$text['description-call_recording_base64']['de-de'] = "Base64";
$text['description-call_recording_base64']['el-gr'] = "Βάση64";
$text['description-call_recording_base64']['es-cl'] = "Base64";
$text['description-call_recording_base64']['es-mx'] = "Base64";
$text['description-call_recording_base64']['fr-ca'] = "Base64";
$text['description-call_recording_base64']['fr-fr'] = "Base64";
$text['description-call_recording_base64']['he-il'] = "בסיס 64";
$text['description-call_recording_base64']['it-it'] = "Base64";
$text['description-call_recording_base64']['nl-nl'] = "Base64";
$text['description-call_recording_base64']['pl-pl'] = "Base64";
$text['description-call_recording_base64']['nl-nl'] = "Baseren64";
$text['description-call_recording_base64']['pl-pl'] = "Baza64";
$text['description-call_recording_base64']['pt-br'] = "Base64";
$text['description-call_recording_base64']['pt-pt'] = "Base64";
$text['description-call_recording_base64']['ro-ro'] = "Base64";
$text['description-call_recording_base64']['ro-ro'] = "Baza64";
$text['description-call_recording_base64']['ru-ru'] = "База64";
$text['description-call_recording_base64']['sv-se'] = "Base64";
$text['description-call_recording_base64']['sv-se'] = "Bas64";
$text['description-call_recording_base64']['uk-ua'] = "База64";
$text['description-call_recording_base64']['zh-cn'] = "基地64";
$text['description-call_recording_base64']['ja-jp'] = "ベース64";
@@ -510,6 +531,7 @@ $text['label-inbound']['ar-eg'] = "واردة";
$text['label-inbound']['de-at'] = "Eingehende";
$text['label-inbound']['de-ch'] = "Eingehende";
$text['label-inbound']['de-de'] = "Eingehende";
$text['label-inbound']['el-gr'] = "Εισερχόμενος";
$text['label-inbound']['es-cl'] = "Entrante";
$text['label-inbound']['es-mx'] = "Entrante";
$text['label-inbound']['fr-ca'] = "Entrant";
@@ -534,6 +556,7 @@ $text['label-outbound']['ar-eg'] = "الصادرة";
$text['label-outbound']['de-at'] = "Ausgehend";
$text['label-outbound']['de-ch'] = "Ausgehend";
$text['label-outbound']['de-de'] = "Ausgehend";
$text['label-outbound']['el-gr'] = "Εξερχόμενος";
$text['label-outbound']['es-cl'] = "Saliente";
$text['label-outbound']['es-mx'] = "Saliente";
$text['label-outbound']['fr-ca'] = "Sortant";
@@ -558,6 +581,7 @@ $text['label-local']['ar-eg'] = "محلي";
$text['label-local']['de-at'] = "Lokal";
$text['label-local']['de-ch'] = "Lokal";
$text['label-local']['de-de'] = "Lokal";
$text['label-local']['el-gr'] = "Τοπικός";
$text['label-local']['es-cl'] = "Local";
$text['label-local']['es-mx'] = "Local";
$text['label-local']['fr-ca'] = "Local";
+9 -3
View File
@@ -56,6 +56,12 @@
//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;
@@ -171,11 +177,11 @@
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-call_recordings']." </b></div>\n";
echo " <div class='actions'>\n";
if (permission_exists('call_recording_download_add') && $call_recordings) {
echo button::create(['type'=>'button','label'=>$text['button-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'collapse'=>'hide-xs','onclick'=>"list_action_set('download'); list_form_submit('form_list');"]);
if (permission_exists('call_recording_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-left: 15px;','collapse'=>'hide-xs','onclick'=>"modal_open('modal-delete','btn_delete');"]);
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')) {
@@ -136,71 +136,147 @@ if (!class_exists('call_recordings')) {
/**
* download the recordings
*/
public function download() {
public function download($records = null) {
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//get call recording from database
if (is_uuid($this->recording_uuid)) {
$sql = "select call_recording_name, call_recording_path ";
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
$sql = ", call_recording_base64 ";
//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);
}
$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'];
//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'] != '') {
file_put_contents($path.'/'.$call_recording_name, base64_decode($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);
}
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");
//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));
}
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;
//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);
}
}
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);
}
exit;
fpassthru($fd);
}
}
//if base64, remove temp recording file
if (!empty($_SESSION['call_recordings']['storage_type']['text']) && $_SESSION['call_recordings']['storage_type']['text'] == 'base64' && $row['call_recording_base64'] != '') {
@unlink($full_recording_path);
}
}
} //method
+21 -17
View File
@@ -31,25 +31,29 @@
//permission details
$y=0;
$apps[$x]['permissions'][0]['name'] = "call_active_view";
$apps[$x]['permissions'][0]['menu']['uuid'] = "eba3d07f-dd5c-6b7b-6880-493b44113ade";
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
$apps[$x]['permissions'][0]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['name'] = "call_active_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "eba3d07f-dd5c-6b7b-6880-493b44113ade";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][1]['name'] = "call_active_transfer";
//$apps[$x]['permissions'][1]['groups'][] = "superadmin";
//$apps[$x]['permissions'][$y]['name'] = "call_active_transfer";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][2]['name'] = "call_active_hangup";
$apps[$x]['permissions'][2]['groups'][] = "superadmin";
$apps[$x]['permissions'][2]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][3]['name'] = "call_active_park";
//$apps[$x]['permissions'][3]['groups'][] = "superadmin";
//$y++;
//$apps[$x]['permissions'][4]['name'] = "call_active_rec";
//$apps[$x]['permissions'][4]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['name'] = "call_active_eavesdrop";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][5]['name'] = "call_active_all";
$apps[$x]['permissions'][5]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['name'] = "call_active_hangup";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
//$y++;
//$apps[$x]['permissions'][$y]['name'] = "call_active_park";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
//$y++;
//$apps[$x]['permissions'][$y]['name'] = "call_active_rec";
//$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
?>
+111
View File
@@ -6,6 +6,7 @@ $text['title-2']['ar-eg'] = "ملحقات نشطة";
$text['title-2']['de-at'] = "Aktive Nebenstellen";
$text['title-2']['de-ch'] = "Aktive Nebenstellen";
$text['title-2']['de-de'] = "Aktive Nebenstellen";
$text['title-2']['el-gr'] = "Ενεργές επεκτάσεις";
$text['title-2']['es-cl'] = "Extensiones Activas";
$text['title-2']['es-mx'] = "Extensiones Activas";
$text['title-2']['fr-ca'] = "Extensions Actives";
@@ -30,6 +31,7 @@ $text['title']['ar-eg'] = "المكالمات النشطة";
$text['title']['de-at'] = "Aktive Gespräche";
$text['title']['de-ch'] = "Aktive Gespräche";
$text['title']['de-de'] = "Aktive Gespräche";
$text['title']['el-gr'] = "Ενεργές κλήσεις";
$text['title']['es-cl'] = "Llamadas Activas";
$text['title']['es-mx'] = "Llamadas Activas";
$text['title']['fr-ca'] = "Communications Actives";
@@ -54,6 +56,7 @@ $text['label-time']['ar-eg'] = "وقت";
$text['label-time']['de-at'] = "Zeit";
$text['label-time']['de-ch'] = "Zeit";
$text['label-time']['de-de'] = "Zeit";
$text['label-time']['el-gr'] = "χρόνος";
$text['label-time']['es-cl'] = "Tiempo";
$text['label-time']['es-mx'] = "Tiempo";
$text['label-time']['fr-ca'] = "Temps";
@@ -78,6 +81,7 @@ $text['label-stop']['ar-eg'] = "توقف السجل";
$text['label-stop']['de-at'] = "Stoppe Aufnahme";
$text['label-stop']['de-ch'] = "Stoppe Aufnahme";
$text['label-stop']['de-de'] = "Stoppe Aufnahme";
$text['label-stop']['el-gr'] = "διακοπή εγγραφής";
$text['label-stop']['es-cl'] = "terminar grabación";
$text['label-stop']['es-mx'] = "terminar grabación";
$text['label-stop']['fr-ca'] = "arrêter l'enregistrement";
@@ -102,6 +106,7 @@ $text['label-status']['ar-eg'] = "حالة";
$text['label-status']['de-at'] = "Status";
$text['label-status']['de-ch'] = "Status";
$text['label-status']['de-de'] = "Status";
$text['label-status']['el-gr'] = "Κατάσταση";
$text['label-status']['es-cl'] = "Estado";
$text['label-status']['es-mx'] = "Estado";
$text['label-status']['fr-ca'] = "Etat";
@@ -126,6 +131,7 @@ $text['label-start']['ar-eg'] = "بدء التسجيل";
$text['label-start']['de-at'] = "Starte Aufnahme";
$text['label-start']['de-ch'] = "Starte Aufnahme";
$text['label-start']['de-de'] = "Starte Aufnahme";
$text['label-start']['el-gr'] = "έναρξη εγγραφής";
$text['label-start']['es-cl'] = "iniciar grabación";
$text['label-start']['es-mx'] = "iniciar grabación";
$text['label-start']['fr-ca'] = "Commencer l'enregistrement";
@@ -150,6 +156,7 @@ $text['label-secure']['ar-eg'] = "يؤمن";
$text['label-secure']['de-at'] = "Sicher";
$text['label-secure']['de-ch'] = "Sicher";
$text['label-secure']['de-de'] = "Sicher";
$text['label-secure']['el-gr'] = "Ασφαλής";
$text['label-secure']['es-cl'] = "Seguro";
$text['label-secure']['es-mx'] = "Seguro";
$text['label-secure']['fr-ca'] = "Securisé";
@@ -174,6 +181,7 @@ $text['label-refresh_pause']['ar-eg'] = "وقفة التحديث";
$text['label-refresh_pause']['de-at'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-ch'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['de-de'] = "Seite neu laden deaktivieren";
$text['label-refresh_pause']['el-gr'] = "Παύση ανανέωσης";
$text['label-refresh_pause']['es-cl'] = "Actualizar Pausa";
$text['label-refresh_pause']['es-mx'] = "Actualizar Pausa";
$text['label-refresh_pause']['fr-ca'] = "Pause Actualiser";
@@ -198,6 +206,7 @@ $text['label-refresh_enable']['ar-eg'] = "تمكين التحديث";
$text['label-refresh_enable']['de-at'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-ch'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['de-de'] = "Seite neu laden aktivieren";
$text['label-refresh_enable']['el-gr'] = "Ενεργοποίηση Ανανέωσης";
$text['label-refresh_enable']['es-cl'] = "Activar Actualizar";
$text['label-refresh_enable']['es-mx'] = "Activar Actualizar";
$text['label-refresh_enable']['fr-ca'] = "Activer Actualiser";
@@ -222,6 +231,7 @@ $text['label-profile']['ar-eg'] = "حساب تعريفي";
$text['label-profile']['de-at'] = "Profil";
$text['label-profile']['de-ch'] = "Profil";
$text['label-profile']['de-de'] = "Profil";
$text['label-profile']['el-gr'] = "Προφίλ";
$text['label-profile']['es-cl'] = "Perfil";
$text['label-profile']['es-mx'] = "Perfil";
$text['label-profile']['fr-ca'] = "Profil";
@@ -246,6 +256,7 @@ $text['label-park-extension']['ar-eg'] = "حديقة";
$text['label-park-extension']['de-at'] = "Parken";
$text['label-park-extension']['de-ch'] = "Parken";
$text['label-park-extension']['de-de'] = "Parken";
$text['label-park-extension']['el-gr'] = "Πάρκο";
$text['label-park-extension']['es-cl'] = "Parquear Extensión";
$text['label-park-extension']['es-mx'] = "Parquear Extensión";
$text['label-park-extension']['fr-ca'] = "Parquer";
@@ -270,6 +281,7 @@ $text['label-park']['ar-eg'] = "حديقة";
$text['label-park']['de-at'] = "parken";
$text['label-park']['de-ch'] = "parken";
$text['label-park']['de-de'] = "parken";
$text['label-park']['el-gr'] = "πάρκο";
$text['label-park']['es-cl'] = "parquear";
$text['label-park']['es-mx'] = "parquear";
$text['label-park']['fr-ca'] = "Parquer";
@@ -294,6 +306,7 @@ $text['label-opt']['ar-eg'] = "خيارات";
$text['label-opt']['de-at'] = "Optionen";
$text['label-opt']['de-ch'] = "Optionen";
$text['label-opt']['de-de'] = "Optionen";
$text['label-opt']['el-gr'] = "Επιλογές";
$text['label-opt']['es-cl'] = "Opciones";
$text['label-opt']['es-mx'] = "Opciones";
$text['label-opt']['fr-ca'] = "Options";
@@ -318,6 +331,7 @@ $text['label-number']['ar-eg'] = "رقم";
$text['label-number']['de-at'] = "Nummer";
$text['label-number']['de-ch'] = "Nummer";
$text['label-number']['de-de'] = "Nummer";
$text['label-number']['el-gr'] = "Αριθμός";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['es-mx'] = "Número";
$text['label-number']['fr-ca'] = "Numéro";
@@ -342,6 +356,7 @@ $text['label-message']['ar-eg'] = "رسالة";
$text['label-message']['de-at'] = "Nachricht";
$text['label-message']['de-ch'] = "Nachricht";
$text['label-message']['de-de'] = "Nachricht";
$text['label-message']['el-gr'] = "Μήνυμα";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['es-mx'] = "Mensaje";
$text['label-message']['fr-ca'] = "Message";
@@ -366,6 +381,7 @@ $text['label-hangup']['ar-eg'] = "تشبث";
$text['label-hangup']['de-at'] = "Auflegen";
$text['label-hangup']['de-ch'] = "Auflegen";
$text['label-hangup']['de-de'] = "Auflegen";
$text['label-hangup']['el-gr'] = "Περιμένω";
$text['label-hangup']['es-cl'] = "Terminar";
$text['label-hangup']['es-mx'] = "Terminar";
$text['label-hangup']['fr-ca'] = "Raccrocher";
@@ -390,6 +406,7 @@ $text['label-ext']['ar-eg'] = "تحويلة";
$text['label-ext']['de-at'] = "Nst";
$text['label-ext']['de-ch'] = "Nst";
$text['label-ext']['de-de'] = "Nst";
$text['label-ext']['el-gr'] = "Εξωτ";
$text['label-ext']['es-cl'] = "Extensión";
$text['label-ext']['es-mx'] = "Extensión";
$text['label-ext']['fr-ca'] = "extension";
@@ -414,6 +431,7 @@ $text['label-domain']['ar-eg'] = "اِختِصاص";
$text['label-domain']['de-at'] = "Domäne";
$text['label-domain']['de-ch'] = "Domäne";
$text['label-domain']['de-de'] = "Domäne";
$text['label-domain']['el-gr'] = "Τομέα";
$text['label-domain']['es-cl'] = "Dominio";
$text['label-domain']['es-mx'] = "Dominio";
$text['label-domain']['fr-ca'] = "Domaine";
@@ -438,6 +456,7 @@ $text['label-destination']['ar-eg'] = "الوجهة";
$text['label-destination']['de-at'] = "Ziel";
$text['label-destination']['de-ch'] = "Ziel";
$text['label-destination']['de-de'] = "Ziel";
$text['label-destination']['el-gr'] = "προορισμός";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['es-mx'] = "Destino";
$text['label-destination']['fr-ca'] = "Dest";
@@ -462,6 +481,7 @@ $text['label-created']['ar-eg'] = "Creată";
$text['label-created']['de-at'] = "Erstellt";
$text['label-created']['de-ch'] = "Erstellt";
$text['label-created']['de-de'] = "Erstellt";
$text['label-created']['el-gr'] = "Δημιουργήθηκε";
$text['label-created']['es-cl'] = "Creado";
$text['label-created']['es-mx'] = "Creado";
$text['label-created']['fr-ca'] = "Créé";
@@ -486,6 +506,7 @@ $text['label-codec']['ar-eg'] = "قراءة / كتابة برنامج الترم
$text['label-codec']['de-at'] = "Lese / Schreib Codec";
$text['label-codec']['de-ch'] = "Lese / Schreib Codec";
$text['label-codec']['de-de'] = "Lese / Schreib Codec";
$text['label-codec']['el-gr'] = "Διαβάστε / Γράψτε Codec";
$text['label-codec']['es-cl'] = "Codec de Lectura / Escritura ";
$text['label-codec']['es-mx'] = "Codec de Lectura / Escritura ";
$text['label-codec']['fr-ca'] = "décode/encode";
@@ -510,6 +531,7 @@ $text['label-cid-number']['ar-eg'] = "رقم CID";
$text['label-cid-number']['de-at'] = "Anrufer Nummer";
$text['label-cid-number']['de-ch'] = "Anrufer Nummer";
$text['label-cid-number']['de-de'] = "Anrufer Nummer";
$text['label-cid-number']['el-gr'] = "Αριθμός CID";
$text['label-cid-number']['es-cl'] = "Número CID";
$text['label-cid-number']['es-mx'] = "Número CID";
$text['label-cid-number']['fr-ca'] = "Numéro Appelant";
@@ -534,6 +556,7 @@ $text['label-cid-name']['ar-eg'] = "اسم CID";
$text['label-cid-name']['de-at'] = "Anrufer Name";
$text['label-cid-name']['de-ch'] = "Anrufer Name";
$text['label-cid-name']['de-de'] = "Anrufer Name";
$text['label-cid-name']['el-gr'] = "Όνομα CID";
$text['label-cid-name']['es-cl'] = "Nombre CID";
$text['label-cid-name']['es-mx'] = "Nombre CID";
$text['label-cid-name']['fr-ca'] = "Nom Appelant";
@@ -558,6 +581,7 @@ $text['label-app']['ar-eg'] = "طلب";
$text['label-app']['de-at'] = "Anwendung";
$text['label-app']['de-ch'] = "Anwendung";
$text['label-app']['de-de'] = "Anwendung";
$text['label-app']['el-gr'] = "Εφαρμογή";
$text['label-app']['es-cl'] = "Aplicación";
$text['label-app']['es-mx'] = "Aplicación";
$text['label-app']['fr-ca'] = "Application";
@@ -576,12 +600,38 @@ $text['label-app']['zh-cn'] = "应用";
$text['label-app']['ja-jp'] = "応用";
$text['label-app']['ko-kr'] = "애플리케이션";
$text['label-eavesdrop']['en-us'] = "Eavesdrop";
$text['label-eavesdrop']['en-gb'] = "Eavesdrop";
$text['label-eavesdrop']['ar-eg'] = "التنصت";
$text['label-eavesdrop']['de-at'] = "Mithören";
$text['label-eavesdrop']['de-ch'] = "Mithören";
$text['label-eavesdrop']['de-de'] = "Mithören";
$text['label-eavesdrop']['el-gr'] = "Αφουγκράζομαι";
$text['label-eavesdrop']['es-cl'] = "Escuchar";
$text['label-eavesdrop']['es-mx'] = "Escuchar";
$text['label-eavesdrop']['fr-ca'] = "Espionner";
$text['label-eavesdrop']['fr-fr'] = "Espionner";
$text['label-eavesdrop']['he-il'] = "לְצוֹתֵת";
$text['label-eavesdrop']['it-it'] = "Ascolta";
$text['label-eavesdrop']['nl-nl'] = "Afluisteren";
$text['label-eavesdrop']['pl-pl'] = "Podsłuchiwanie";
$text['label-eavesdrop']['pt-br'] = "Investigar";
$text['label-eavesdrop']['pt-pt'] = "Bisbilhotar";
$text['label-eavesdrop']['ro-ro'] = "Trage cu urechea";
$text['label-eavesdrop']['ru-ru'] = "Подслушивать";
$text['label-eavesdrop']['sv-se'] = "Medlyssning";
$text['label-eavesdrop']['uk-ua'] = "підслуховувати";
$text['label-eavesdrop']['zh-cn'] = "窃听";
$text['label-eavesdrop']['ja-jp'] = "盗聴";
$text['label-eavesdrop']['ko-kr'] = "엿듣다";
$text['description-2']['en-us'] = "Use this to view all extensions and monitor and interact with active calls.";
$text['description-2']['en-gb'] = "Use this to view all extensions and monitor and interact with active calls.";
$text['description-2']['ar-eg'] = "استخدم هذا لعرض جميع الملحقات ومراقبة المكالمات النشطة والتفاعل معها.";
$text['description-2']['de-at'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['de-ch'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['de-de'] = "Benutzen Sie die Funktionen um alle Nebenstellen anzuzeigen, zu überwachen und aktive Gespräche zu steuern.";
$text['description-2']['el-gr'] = "Χρησιμοποιήστε το για να προβάλετε όλες τις επεκτάσεις και να παρακολουθείτε και να αλληλεπιδράτε με ενεργές κλήσεις.";
$text['description-2']['es-cl'] = "Utilice este menú para ver todas las extensiones, monitorear e interactuar con las llamadas activas.";
$text['description-2']['es-mx'] = "Utilice este menú para ver todas las extensiones, monitorear e interactuar con las llamadas activas.";
$text['description-2']['fr-ca'] = "Voir toutes les extensions, superviser et interagir avec les Communications Actives.";
@@ -606,6 +656,7 @@ $text['description']['ar-eg'] = "استخدم هذا لمراقبة المكال
$text['description']['de-at'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['de-ch'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['de-de'] = "Benutzen Sie die Funktionen um aktive Gespräche zu steuern.";
$text['description']['el-gr'] = "Χρησιμοποιήστε το για να παρακολουθείτε και να αλληλεπιδράτε με τις ενεργές κλήσεις.";
$text['description']['es-cl'] = "Utilice este menú para monitorear e interactuar con las llamadas activas.";
$text['description']['es-mx'] = "Utilice este menú para monitorear e interactuar con las llamadas activas.";
$text['description']['fr-ca'] = "Superviser et interagir avec les Communications Actives.";
@@ -624,12 +675,38 @@ $text['description']['zh-cn'] = "使用它来监视活动呼叫并与之交互
$text['description']['ja-jp'] = "これを使用して、アクティブな通話を監視し、対話します。";
$text['description']['ko-kr'] = "이를 사용하여 활성 통화를 모니터링하고 상호 작용합니다.";
$text['description-eavesdrop_destination']['en-us'] = "Select the Eavesdrop Destination";
$text['description-eavesdrop_destination']['en-gb'] = "Select the Eavesdrop Destination";
$text['description-eavesdrop_destination']['ar-eg'] = "حدد وجهة Eavesdrop";
$text['description-eavesdrop_destination']['de-at'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-ch'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['de-de'] = "Wählen Sie ein Ziel zum Mithören";
$text['description-eavesdrop_destination']['el-gr'] = "Επιλέξτε τον προορισμό EAVESDROP";
$text['description-eavesdrop_destination']['es-cl'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['es-mx'] = "Seleccione el Eavesdrop Destino";
$text['description-eavesdrop_destination']['fr-ca'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['fr-fr'] = "Sélectionnez la destination d'espionnage";
$text['description-eavesdrop_destination']['he-il'] = "בחר ביעד האזנת סתר";
$text['description-eavesdrop_destination']['it-it'] = "Seleziona la Destinazione d'Ascolto";
$text['description-eavesdrop_destination']['nl-nl'] = "Kies afluister bestemming";
$text['description-eavesdrop_destination']['pl-pl'] = "Wybierz destynację podsłuchiwanych rozmów";
$text['description-eavesdrop_destination']['pt-br'] = "Selecione o eavesdrop de destino";
$text['description-eavesdrop_destination']['pt-pt'] = "Selecione o Eavesdrop Destino";
$text['description-eavesdrop_destination']['ro-ro'] = "Selectați Destinația Eavesdrop";
$text['description-eavesdrop_destination']['ru-ru'] = "Выберите подслушивание пункта назначения";
$text['description-eavesdrop_destination']['sv-se'] = "Välj Medlyssning Destination";
$text['description-eavesdrop_destination']['uk-ua'] = "Виберіть пункт призначення підслуховувати";
$text['description-eavesdrop_destination']['zh-cn'] = "选择窃听目的地";
$text['description-eavesdrop_destination']['ja-jp'] = "盗聴先を選択";
$text['description-eavesdrop_destination']['ko-kr'] = "도청 대상 선택";
$text['confirm-socket']['en-us'] = "Connection to Event Socket failed.";
$text['confirm-socket']['en-gb'] = "Connection to Event Socket failed.";
$text['confirm-socket']['ar-eg'] = "فشل الاتصال بـ Event Socket.";
$text['confirm-socket']['de-at'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['de-ch'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['de-de'] = "Verbindung zum Event-Socket fehlgeschlagen.";
$text['confirm-socket']['el-gr'] = "Η σύνδεση στο Event Socket απέτυχε.";
$text['confirm-socket']['es-cl'] = "Conexión con socket fallida.";
$text['confirm-socket']['es-mx'] = "Conexión con socket fallida.";
$text['confirm-socket']['fr-ca'] = "la Connexion au Event Socket a échoué.";
@@ -654,6 +731,7 @@ $text['confirm-hangup']['ar-eg'] = "هل تريد حقًا إنهاء المكا
$text['confirm-hangup']['de-at'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['de-ch'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['de-de'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangup']['el-gr'] = "Θέλετε πραγματικά να τερματίσετε αυτήν την κλήση;";
$text['confirm-hangup']['es-cl'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangup']['es-mx'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangup']['fr-ca'] = "Voulez-vous vraiment raccrocher cette communication?";
@@ -672,12 +750,38 @@ $text['confirm-hangup']['zh-cn'] = "你真的要挂断这个电话吗?";
$text['confirm-hangup']['ja-jp'] = "本当にこの電話を切りますか?";
$text['confirm-hangup']['ko-kr'] = "이 전화를 끊으시겠습니까?";
$text['confirm-eavesdrop']['en-us'] = "Do you really want to eavesdrop on this call?";
$text['confirm-eavesdrop']['en-gb'] = "Do you really want to eavesdrop on this call?";
$text['confirm-eavesdrop']['ar-eg'] = "هل تريد حقًا التنصت على هذه المكالمة؟";
$text['confirm-eavesdrop']['de-at'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['de-ch'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['de-de'] = "Wollen Sie diesen Anruf wirklich belauschen?";
$text['confirm-eavesdrop']['el-gr'] = "Θέλετε πραγματικά να κρυφακούσετε αυτήν την κλήση;";
$text['confirm-eavesdrop']['es-cl'] = "¿De verdad quieres escuchar esta llamada?";
$text['confirm-eavesdrop']['es-mx'] = "¿De verdad quieres escuchar esta llamada?";
$text['confirm-eavesdrop']['fr-ca'] = "Voulez-vous vraiment écouter cet appel ?";
$text['confirm-eavesdrop']['fr-fr'] = "Voulez-vous vraiment écouter cet appel ?";
$text['confirm-eavesdrop']['he-il'] = "האם אתה באמת רוצה לצותת לשיחה הזו?";
$text['confirm-eavesdrop']['it-it'] = "Vuoi davvero origliare questa chiamata?";
$text['confirm-eavesdrop']['nl-nl'] = "Wilt u dit gesprek echt afluisteren?";
$text['confirm-eavesdrop']['pl-pl'] = "Czy na pewno chcesz podsłuchiwać tę rozmowę?";
$text['confirm-eavesdrop']['pt-br'] = "Você realmente quer escutar esta chamada?";
$text['confirm-eavesdrop']['pt-pt'] = "Você realmente quer escutar esta chamada?";
$text['confirm-eavesdrop']['ro-ro'] = "Chiar vrei să asculti cu urechea la acest apel?";
$text['confirm-eavesdrop']['ru-ru'] = "Вы действительно хотите подслушать этот звонок?";
$text['confirm-eavesdrop']['sv-se'] = "Vill du verkligen avlyssna det här samtalet?";
$text['confirm-eavesdrop']['uk-ua'] = "Ви дійсно хочете підслухати цей дзвінок?";
$text['confirm-eavesdrop']['zh-cn'] = "你真的想窃听这个电话吗?";
$text['confirm-eavesdrop']['ja-jp'] = "本当にこの通話を盗聴したいですか?";
$text['confirm-eavesdrop']['ko-kr'] = "정말로 이 통화를 엿듣고 싶으신가요?";
$text['confirm-hangups']['en-us'] = "Do you really want to hangup these calls?";
$text['confirm-hangups']['en-gb'] = "Do you really want to hangup these calls?";
$text['confirm-hangups']['ar-eg'] = "هل تريد حقًا إنهاء هذه المكالمات؟";
$text['confirm-hangups']['de-at'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['de-ch'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['de-de'] = "Wollen Sie dieses Gespräch wirklich beenden?";
$text['confirm-hangups']['el-gr'] = "Θέλετε πραγματικά να τερματίσετε αυτές τις κλήσεις;";
$text['confirm-hangups']['es-cl'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangups']['es-mx'] = "¿Realmente desea terminar esta llamada?";
$text['confirm-hangups']['fr-ca'] = "Voulez-vous vraiment raccrocher cette communication?";
@@ -702,6 +806,7 @@ $text['check-onbreak-status']['ar-eg'] = "في استراحة";
$text['check-onbreak-status']['de-at'] = "Auf Pause";
$text['check-onbreak-status']['de-ch'] = "Auf Pause";
$text['check-onbreak-status']['de-de'] = "Auf Pause";
$text['check-onbreak-status']['el-gr'] = "Σε διάλειμμα";
$text['check-onbreak-status']['es-cl'] = "En Pausa";
$text['check-onbreak-status']['es-mx'] = "En Pausa";
$text['check-onbreak-status']['fr-ca'] = "En Pause";
@@ -726,6 +831,7 @@ $text['check-loggedout-status']['ar-eg'] = "تسجيل الخروج";
$text['check-loggedout-status']['de-at'] = "Abgemeldet";
$text['check-loggedout-status']['de-ch'] = "Abgemeldet";
$text['check-loggedout-status']['de-de'] = "Abgemeldet";
$text['check-loggedout-status']['el-gr'] = "Αποσυνδέθηκα";
$text['check-loggedout-status']['es-cl'] = "Desconectado";
$text['check-loggedout-status']['es-mx'] = "Desconectado";
$text['check-loggedout-status']['fr-ca'] = "Déconnecté";
@@ -750,6 +856,7 @@ $text['check-do-not-disturb-status']['ar-eg'] = "للا تخل";
$text['check-do-not-disturb-status']['de-at'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['de-ch'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['de-de'] = "Bitte nicht Stören";
$text['check-do-not-disturb-status']['el-gr'] = "Μην ενοχλείτε";
$text['check-do-not-disturb-status']['es-cl'] = "No molestar";
$text['check-do-not-disturb-status']['es-mx'] = "No molestar";
$text['check-do-not-disturb-status']['fr-ca'] = "Ne Pas Déranger";
@@ -774,6 +881,7 @@ $text['check-available-status']['ar-eg'] = "متاح";
$text['check-available-status']['de-at'] = "Erreichbar";
$text['check-available-status']['de-ch'] = "Erreichbar";
$text['check-available-status']['de-de'] = "Erreichbar";
$text['check-available-status']['el-gr'] = "Διαθέσιμος";
$text['check-available-status']['es-cl'] = "Disponible";
$text['check-available-status']['es-mx'] = "Disponible";
$text['check-available-status']['fr-ca'] = "Disponible";
@@ -798,6 +906,7 @@ $text['check-available-on-demand-status']['ar-eg'] = "متاح (عند الطل
$text['check-available-on-demand-status']['de-at'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['de-ch'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['de-de'] = "Erreichbar (Auf Anfrage)";
$text['check-available-on-demand-status']['el-gr'] = "Διαθέσιμο (κατ' απαίτηση)";
$text['check-available-on-demand-status']['es-cl'] = "Disponible (On Demand)";
$text['check-available-on-demand-status']['es-mx'] = "Disponible (On Demand)";
$text['check-available-on-demand-status']['fr-ca'] = "Disponible (Sur Demande)";
@@ -822,6 +931,7 @@ $text['button-show_all']['ar-eg'] = "عرض الكل";
$text['button-show_all']['de-at'] = "Alle anzeigen";
$text['button-show_all']['de-ch'] = "Alle anzeigen";
$text['button-show_all']['de-de'] = "Alle anzeigen";
$text['button-show_all']['el-gr'] = "Προβολή όλων";
$text['button-show_all']['es-cl'] = "Mostrar Todos";
$text['button-show_all']['es-mx'] = "Mostrar Todos";
$text['button-show_all']['fr-ca'] = "Montrer Tout";
@@ -846,6 +956,7 @@ $text['message-calls_ended']['ar-eg'] = "انتهت المكالمات";
$text['message-calls_ended']['de-at'] = "Anrufe beendet";
$text['message-calls_ended']['de-ch'] = "Anrufe beendet";
$text['message-calls_ended']['de-de'] = "Anrufe beendet";
$text['message-calls_ended']['el-gr'] = "Τελειώθηκαν οι κλήσεις";
$text['message-calls_ended']['es-cl'] = "Llamadas finalizadas";
$text['message-calls_ended']['es-mx'] = "Llamadas finalizadas";
$text['message-calls_ended']['fr-ca'] = "Appels terminés";
+46 -4
View File
@@ -61,9 +61,10 @@
?>
<script type="text/javascript">
//define refresh function, initial start
var refresh = 1980;
var refresh = 1980;
var source_url = 'calls_active_inc.php?';
var timer_id;
<?php
if ($show == 'all') {
echo "source_url = source_url + '&show=all';";
@@ -72,9 +73,11 @@
echo "source_url = source_url + '&debug';";
}
?>
var ajax_get = function () {
function ajax_get() {
url = source_url + '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
$.ajax({
url: source_url, success: function(response){
url: url,
success: function(response){
$("#ajax_reponse").html(response);
}
});
@@ -87,7 +90,7 @@
function refresh_stop() {
clearTimeout(timer_id);
//document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; margin-right: 20px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">";
document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>";
document.getElementById('refresh_state').innerHTML = "<?php echo button::create(['type'=>'button','title'=>$text['label-refresh_enable'],'icon'=>'pause','onclick'=>'refresh_start()']); ?>";
}
function refresh_start() {
@@ -96,10 +99,48 @@
ajax_get();
}
//eavesdrop call
function eavesdrop_call(ext, chan_uuid) {
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid, document.getElementById('eavesdrop_dest').value);
if (cmd != '') {
send_cmd(cmd);
}
}
}
function get_eavesdrop_cmd(ext, chan_uuid, destination) {
url = "calls_exec.php?action=eavesdrop&ext=" + ext + "&chan_uuid=" + chan_uuid + "&destination=" + destination;
return url;
}
//used by eavesdrop function
function send_cmd(url) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_response').innerHTML=xmlhttp.responseText;
}
</script>
<?php
//create simple array of users own extensions
unset($_SESSION['user']['extensions']);
if (is_array($_SESSION['user']['extension'])) {
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
}
}
echo "<div id='ajax_reponse'></div>\n";
echo "<div id='cmd_response' style='display: none;'></div>\n";
echo "<div id='time_stamp' style='visibility:hidden'>".date('Y-m-d-s')."</div>\n";
echo "<br><br><br>";
@@ -118,4 +159,5 @@ require_once "resources/footer.php";
return escape(cmd);
}
*/
?>
+42 -19
View File
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2019
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -52,11 +52,11 @@
$switch_cmd = 'show channels as json';
//create the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//send the event socket command and get the array
if ($fp) {
$json = trim(event_socket_request($fp, 'api '.$switch_cmd));
if ($esl->is_connected()) {
$json = trim(event_socket::api($switch_cmd));
$results = json_decode($json, "true");
}
@@ -67,25 +67,21 @@
//get the domain
if (!empty($row['context']) && $row['context'] != "public" && $row['context'] != "default") {
if (substr_count($row['context'], '@') > 0) {
$context_array = explode('@', $row['context']);
$row['domain_name'] = $context_array[1];
$row['domain_name'] = explode('@', $row['context'])[1];
}
else {
$row['domain_name'] = $row['context'];
}
}
else if (substr_count($row['presence_id'], '@') > 0) {
$presence_id_array = explode('@', $row['presence_id']);
$row['domain_name'] = $presence_id_array[1];
$row['domain_name'] = explode('@', $row['presence_id'])[1];
}
//add the row to the array
if (($show == 'all' && permission_exists('call_active_all'))) {
$rows[] = $row;
}
else {
if ($row['domain_name'] == $_SESSION['domain_name']) {
$rows[] = $row;
}
elseif ($row['domain_name'] == $_SESSION['domain_name']) {
$rows[] = $row;
}
}
unset($results);
@@ -94,7 +90,7 @@
//if the connnection is available then run it and return the results
if (!$fp) {
if (!$esl) {
$msg = "<div align='center'>".$text['confirm-socket']."<br /></div>";
echo "<div align='center'>\n";
@@ -120,6 +116,22 @@
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";
}
}
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');"]);
}
@@ -167,8 +179,8 @@
echo " <th>".$text['label-app']."</th>\n";
echo " <th>".$text['label-codec']."</th>\n";
echo " <th>".$text['label-secure']."</th>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='action-button'>&nbsp;</td>\n";
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <th>&nbsp;</th>\n";
}
echo "</tr>\n";
@@ -226,13 +238,23 @@
echo " <td>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
echo " <td>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
echo " <td>".escape($secure)."&nbsp;</td>\n";
if (permission_exists('call_active_hangup')) {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['label-hangup'],'icon'=>'phone-slash','onclick'=>"if (confirm('".$text['confirm-hangup']."')) { list_self_check('checkbox_".$x."'); list_action_set('hangup'); list_form_submit('form_list'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
echo " </td>\n";
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++;
}
@@ -248,3 +270,4 @@
}
?>
+21 -5
View File
@@ -58,6 +58,7 @@
exit;
}
$calls = [];
//verify submitted call uuids
if (is_array($_POST['calls']) && @sizeof($_POST['calls']) != 0) {
foreach ($_POST['calls'] as $call) {
@@ -71,18 +72,18 @@
}
//iterate through calls
if (is_array($calls) && @sizeof($calls) != 0) {
if (count($calls) > 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$esl = event_socket::create();
//execute hangup command
foreach ($calls as $call_uuid) {
$switch_result = event_socket_request($fp, 'api uuid_kill '.$call_uuid);
if ($esl->is_connected()) foreach ($calls as $call_uuid) {
event_socket::async("uuid_kill $call_uuid");
}
//set message
message::add($text['message-calls_ended'].': '.@sizeof($calls),'positive');
message::add($text['message-calls_ended'].': '.count($calls),'positive');
}
@@ -90,6 +91,21 @@
header('Location: calls_active.php');
exit;
}
else if ($_REQUEST['action'] == 'eavesdrop' && permission_exists('call_active_eavesdrop')) {
$uuid_pattern = '/[^-A-Fa-f0-9]/';
$num_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']);
$api_cmd = 'bgapi originate {origination_caller_id_name='.$text['label-eavesdrop'].',origination_caller_id_number='.$ext.'}user/'.$destination.'@'.$_SESSION['domain_name'].' &eavesdrop('.$chan_uuid.')';
//run the command
$switch_result = event_socket::api($api_cmd);
}
else {
echo "access denied";
+32
View File
@@ -6,6 +6,7 @@ $text['label-click2call']['ar-eg'] = "اضغط للاتصال";
$text['label-click2call']['de-at'] = "Click to Call";
$text['label-click2call']['de-ch'] = "Click to Call";
$text['label-click2call']['de-de'] = "Click to Call";
$text['label-click2call']['el-gr'] = "Κάντε κλικ για κλήση";
$text['label-click2call']['es-cl'] = "Pulse para Llamar";
$text['label-click2call']['es-mx'] = "Pulse para Llamar";
$text['label-click2call']['fr-ca'] = "Cliquez pour appeler";
@@ -30,6 +31,7 @@ $text['desc-click2call']['ar-eg'] = "قم بتوفير المعلومات الت
$text['desc-click2call']['de-at'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['de-ch'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['de-de'] = "Geben Sie folgende Informationen an um einen Anruf von der Quellrufnummer zur Zielrufniummer her zu stellen";
$text['desc-click2call']['el-gr'] = "Δώστε τις ακόλουθες πληροφορίες για να πραγματοποιήσετε μια κλήση από τον αριθμό προέλευσης στον αριθμό προορισμού.";
$text['desc-click2call']['es-cl'] = "Ingrese la siguiente información para realizar una llamada desde un número de origen a un número de destino.";
$text['desc-click2call']['es-mx'] = "Ingrese la siguiente información para realizar una llamada desde un número de origen a un número de destino.";
$text['desc-click2call']['fr-ca'] = "Fournissez les informations suivantes afin de lancer un appel d'un numéro vers un autre.";
@@ -54,6 +56,7 @@ $text['label-src-caller-id-nam']['ar-eg'] = "اسم معرف المتصل الم
$text['label-src-caller-id-nam']['de-at'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['de-ch'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['de-de'] = "Quell Anruferkennung (Namen)";
$text['label-src-caller-id-nam']['el-gr'] = "Πηγή Όνομα αναγνώρισης καλούντος";
$text['label-src-caller-id-nam']['es-cl'] = "Nombre de Caller ID de origen";
$text['label-src-caller-id-nam']['es-mx'] = "Nombre de Caller ID de origen";
$text['label-src-caller-id-nam']['fr-ca'] = "Nom de l'appelant";
@@ -78,6 +81,7 @@ $text['desc-src-caller-id-nam']['ar-eg'] = "أدخل اسم معرف المتص
$text['desc-src-caller-id-nam']['de-at'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['de-ch'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['de-de'] = "Geben Sie die Anruferkennung (Namen) ein, die an Ihr Telefon übermittelt werden soll.";
$text['desc-src-caller-id-nam']['el-gr'] = "Εισαγάγετε το όνομα αναγνώρισης καλούντος για αποστολή στο τηλέφωνό σας.";
$text['desc-src-caller-id-nam']['es-cl'] = "Ingrese el nombre del Caller ID para enviar a su teléfono.";
$text['desc-src-caller-id-nam']['es-mx'] = "Ingrese el nombre del Caller ID para enviar a su teléfono.";
$text['desc-src-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émettre à votre téléphone.";
@@ -102,6 +106,7 @@ $text['label-src-caller-id-num']['ar-eg'] = "رقم هوية المتصل الم
$text['label-src-caller-id-num']['de-at'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['de-ch'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['de-de'] = "Quell Anruferkennung (Nummer)";
$text['label-src-caller-id-num']['el-gr'] = "Αριθμός αναγνώρισης κλήσης πηγής";
$text['label-src-caller-id-num']['es-cl'] = "Número de Caller ID de origen";
$text['label-src-caller-id-num']['es-mx'] = "Número de Caller ID de origen";
$text['label-src-caller-id-num']['fr-ca'] = "Numéro de l'appelant";
@@ -126,6 +131,7 @@ $text['desc-src-caller-id-num']['ar-eg'] = "أدخل رقم معرف المتص
$text['desc-src-caller-id-num']['de-at'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['de-de'] = "Geben Sie die Anruferkennung (Nummer) ein, die an Ihr Telefon übermittelt werden soll.(In der Regel ist diese identisch mit der Zielrufnummer).";
$text['desc-src-caller-id-num']['el-gr'] = "Εισαγάγετε τον αριθμό αναγνώρισης καλούντος για αποστολή στο τηλέφωνό σας (πιθανότατα θέλετε να είναι ο ίδιος με τον αριθμό προορισμού).";
$text['desc-src-caller-id-num']['es-cl'] = "Ingrese el número del Caller ID para enviar a su teléfono (probablemente desee que sea el mismo que el número de destino).";
$text['desc-src-caller-id-num']['es-mx'] = "Ingrese el número del Caller ID para enviar a su teléfono (probablemente desee que sea el mismo que el número de destino).";
$text['desc-src-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à émettre à votre téléphone (Il est en général le même que le numéro de destination).";
@@ -150,6 +156,7 @@ $text['label-dest-caller-id-nam']['ar-eg'] = "اسم هوية المتصل ال
$text['label-dest-caller-id-nam']['de-at'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['de-ch'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['de-de'] = "Ziel Anruferkennung (Name)";
$text['label-dest-caller-id-nam']['el-gr'] = "Όνομα ταυτότητας καλούντος προορισμού";
$text['label-dest-caller-id-nam']['es-cl'] = "Nombre de Caller ID de destino";
$text['label-dest-caller-id-nam']['es-mx'] = "Nombre de Caller ID de destino";
$text['label-dest-caller-id-nam']['fr-ca'] = "Nom de l'appelant de destination";
@@ -174,6 +181,7 @@ $text['desc-dest-caller-id-nam']['ar-eg'] = "أدخل اسم معرف المتص
$text['desc-dest-caller-id-nam']['de-at'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['de-ch'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['de-de'] = "Geben Sie die Anruferkennung (Name) ein, die an das Ziel übermittelt werden soll.";
$text['desc-dest-caller-id-nam']['el-gr'] = "Εισαγάγετε το όνομα αναγνώρισης καλούντος για αποστολή στον αριθμό προορισμού.";
$text['desc-dest-caller-id-nam']['es-cl'] = "Ingrese el nombre de Caller ID para enviar al número de destino.";
$text['desc-dest-caller-id-nam']['es-mx'] = "Ingrese el nombre de Caller ID para enviar al número de destino.";
$text['desc-dest-caller-id-nam']['fr-ca'] = "Choisir le nom d'appelant à émettre à la destination";
@@ -198,6 +206,7 @@ $text['label-dest-caller-id-num']['ar-eg'] = "رقم هوية المتصل ال
$text['label-dest-caller-id-num']['de-at'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['de-ch'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['de-de'] = "Ziel Anruferkennung (Nummer)";
$text['label-dest-caller-id-num']['el-gr'] = "Αριθμός αναγνώρισης καλούντος προορισμού";
$text['label-dest-caller-id-num']['es-cl'] = "Número de Caller ID de destino";
$text['label-dest-caller-id-num']['es-mx'] = "Número de Caller ID de destino";
$text['label-dest-caller-id-num']['fr-ca'] = "Numéro de l'appelant de destination";
@@ -222,6 +231,7 @@ $text['desc-dest-caller-id-num']['ar-eg'] = "أدخل رقم معرف المتص
$text['desc-dest-caller-id-num']['de-at'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['de-ch'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['de-de'] = "Geben Sie die Anruferkennung (Nummer) ein, die an das Ziel übermittelt werden soll (Normalerweise Ihre Rufnummer).";
$text['desc-dest-caller-id-num']['el-gr'] = "Εισαγάγετε τον αριθμό αναγνώρισης καλούντος για αποστολή στον αριθμό προορισμού (πιθανότατα θέλετε να είναι ο αριθμός τηλεφώνου σας).";
$text['desc-dest-caller-id-num']['es-cl'] = "Ingrese número de Caller ID para enviar al número de destino (probablemente desee que sea su número de teléfono).";
$text['desc-dest-caller-id-num']['es-mx'] = "Ingrese número de Caller ID para enviar al número de destino (probablemente desee que sea su número de teléfono).";
$text['desc-dest-caller-id-num']['fr-ca'] = "Choisir le numéro d'appelant à émettre au téléphone destination (Il est en général le même que votre numéro.)";
@@ -246,6 +256,7 @@ $text['label-src-num']['ar-eg'] = "رقم المصدر";
$text['label-src-num']['de-at'] = "Quell Rufnummer";
$text['label-src-num']['de-ch'] = "Quell Rufnummer";
$text['label-src-num']['de-de'] = "Quell Rufnummer";
$text['label-src-num']['el-gr'] = "Αριθμός πηγής";
$text['label-src-num']['es-cl'] = "Número de origen";
$text['label-src-num']['es-mx'] = "Número de origen";
$text['label-src-num']['fr-ca'] = "Numéro de source";
@@ -270,6 +281,7 @@ $text['desc-src-num']['ar-eg'] = "أدخل رقم هاتفك. يمكن أن يك
$text['desc-src-num']['de-at'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['de-ch'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['de-de'] = "Geben Sie Ihre Rufnummer ein.Diese kann eine Nebenstelle auf dem System sein, oder eine andere Rufnummer (z.B. Ihre Mobilfunknummer).";
$text['desc-src-num']['el-gr'] = "Πληκτρολόγησε τον αριθμό του τηλεφώνου σου. Αυτό μπορεί να είναι μια επέκταση στο σύστημα ή ένας άλλος αριθμός (π.χ.: κινητό τηλέφωνο).";
$text['desc-src-num']['es-cl'] = "Ingrese su número de teléfono. Este puede ser una extesión en el sistema, u otro número (ej. teléfono movil).";
$text['desc-src-num']['es-mx'] = "Ingrese su número de teléfono. Este puede ser una extesión en el sistema, u otro número (ej. teléfono movil).";
$text['desc-src-num']['fr-ca'] = "Choisir votre numéro de téléphone. Il peut être une extension du système, ou tout autre numéro (eg: un mobile).";
@@ -294,6 +306,7 @@ $text['label-dest-num']['ar-eg'] = "رقم الوجهة";
$text['label-dest-num']['de-at'] = "Ziel Rufnummer";
$text['label-dest-num']['de-ch'] = "Ziel Rufnummer";
$text['label-dest-num']['de-de'] = "Ziel Rufnummer";
$text['label-dest-num']['el-gr'] = "Αριθμός προορισμού";
$text['label-dest-num']['es-cl'] = "Número de destino";
$text['label-dest-num']['es-mx'] = "Número de destino";
$text['label-dest-num']['fr-ca'] = "Numéro du destination";
@@ -318,6 +331,7 @@ $text['desc-dest-num']['ar-eg'] = "أدخل الرقم للاتصال. يمكن
$text['desc-dest-num']['de-at'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['de-ch'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['de-de'] = "Geben Sie die Zielnummer ein. Diese kann eine Nebenstelle auf dem System sein, eine andere Rufnummer, oder eine SIP URI. Sip URI's sind wie folgt einzugeben: 5551234567@voip.example.com:5080 (5080 für freeswitch, oder 5060 für andere Systeme).";
$text['desc-dest-num']['el-gr'] = "Εισαγάγετε τον αριθμό που θέλετε να καλέσετε. Αυτό μπορεί να είναι μια επέκταση στο σύστημα, ένας άλλος αριθμός ή μια γουλιά. Τα Sip URI είναι της μορφής 5551234567@voip.example.com:5080 (5080 για freeswitch ή 5060 για άλλα συστήματα).";
$text['desc-dest-num']['es-cl'] = "Ingrese el número a llamar. Este puede ser una extensión en el sistema, otro número o un uri sip. Uri's sip son de la forma 5551234567@voip.example.com:5080 (5080 para freeswitch, o 5060 para otros sistemas).";
$text['desc-dest-num']['es-mx'] = "Ingrese el número a llamar. Este puede ser una extensión en el sistema, otro número o un uri sip. Uri's sip son de la forma 5551234567@voip.example.com:5080 (5080 para freeswitch, o 5060 para otros sistemas).";
$text['desc-dest-num']['fr-ca'] = "Choisir un numéro à appeler. Il peut être une extension du système, un autre numéro, une URI SIP. les URI SIP sont de la forme : 5551234567@voip.example.com:5080 (5080 pour freeswitch, ou 5060 pour d'autre système).";
@@ -342,6 +356,7 @@ $text['label-auto-answer']['ar-eg'] = "رد ألي";
$text['label-auto-answer']['de-at'] = "Automatische Rufannahme";
$text['label-auto-answer']['de-ch'] = "Automatische Rufannahme";
$text['label-auto-answer']['de-de'] = "Automatische Rufannahme";
$text['label-auto-answer']['el-gr'] = "Αυτόματη απάντηση";
$text['label-auto-answer']['es-cl'] = "respuesta automática";
$text['label-auto-answer']['es-mx'] = "respuesta automática";
$text['label-auto-answer']['fr-ca'] = "Réponse automatique";
@@ -366,6 +381,7 @@ $text['desc-auto-answer']['ar-eg'] = "حدد ما إذا كنت تريد تمك
$text['desc-auto-answer']['de-at'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['de-ch'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['de-de'] = "Wählen Sie, ob die automatische Rufannahme aktiviert werden soll.";
$text['desc-auto-answer']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιηθεί η αυτόματη απάντηση.";
$text['desc-auto-answer']['es-cl'] = "Indique si desea activar la respuesta automática.";
$text['desc-auto-answer']['es-mx'] = "Indique si desea activar la respuesta automática.";
$text['desc-auto-answer']['fr-ca'] = "Activer ou non la réponse automatique.";
@@ -390,6 +406,7 @@ $text['label-record']['ar-eg'] = "سِجِلّ";
$text['label-record']['de-at'] = "Aufzeichnen";
$text['label-record']['de-ch'] = "Aufzeichnen";
$text['label-record']['de-de'] = "Aufzeichnen";
$text['label-record']['el-gr'] = "Ρεκόρ";
$text['label-record']['es-cl'] = "Grabar";
$text['label-record']['es-mx'] = "Grabar";
$text['label-record']['fr-ca'] = "Enregistrer";
@@ -414,6 +431,7 @@ $text['label-true']['ar-eg'] = "حقيقي";
$text['label-true']['de-at'] = "ein";
$text['label-true']['de-ch'] = "ein";
$text['label-true']['de-de'] = "ein";
$text['label-true']['el-gr'] = "αληθής";
$text['label-true']['es-cl'] = "verdadero";
$text['label-true']['es-mx'] = "verdadero";
$text['label-true']['fr-ca'] = "oui";
@@ -438,6 +456,7 @@ $text['label-false']['ar-eg'] = "خطأ شنيع";
$text['label-false']['de-at'] = "aus";
$text['label-false']['de-ch'] = "aus";
$text['label-false']['de-de'] = "aus";
$text['label-false']['el-gr'] = "ψευδής";
$text['label-false']['es-cl'] = "falso";
$text['label-false']['es-mx'] = "falso";
$text['label-false']['fr-ca'] = "non";
@@ -462,6 +481,7 @@ $text['desc-record']['ar-eg'] = "حدد ما إذا كنت تريد تسجيل
$text['desc-record']['de-at'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['de-ch'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['de-de'] = "Wählen Sie, ob der Anruf aufgezeichnet werden soll.";
$text['desc-record']['el-gr'] = "Επιλέξτε εάν θα ηχογραφήσετε την κλήση.";
$text['desc-record']['es-cl'] = "Indique si desea grabar la llamada.";
$text['desc-record']['es-mx'] = "Indique si desea grabar la llamada.";
$text['desc-record']['fr-ca'] = "Choisir si vous voulez enregistrer l'appel.";
@@ -486,6 +506,7 @@ $text['label-ringback']['ar-eg'] = "رنين مرة أخرى";
$text['label-ringback']['de-at'] = "Rufton";
$text['label-ringback']['de-ch'] = "Rufton";
$text['label-ringback']['de-de'] = "Rufton";
$text['label-ringback']['el-gr'] = "Καλώ πίσω";
$text['label-ringback']['es-cl'] = "Regresar tono";
$text['label-ringback']['es-mx'] = "Regresar tono";
$text['label-ringback']['fr-ca'] = "Retour de sonnerie";
@@ -510,6 +531,7 @@ $text['desc-ringback']['ar-eg'] = "يحدد ما سوف تسمعه أثناء ا
$text['desc-ringback']['de-at'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['de-ch'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['de-de'] = "Geben Sie an, was Sie hören möchten, während die Verbindung aufgebaut wird. Zur Auswahl stehen musik (Wartemusik) oder Rufton";
$text['desc-ringback']['el-gr'] = "Καθορίζει τι θα ακούτε ενώ καλείται ο προορισμός. Οι επιλογές είναι μουσική (μουσική σε αναμονή) κουδούνισμα (ήχος κλήσης).";
$text['desc-ringback']['es-cl'] = "Defina qué desea escuchar mientras se llama al destinatario. Las opciones son música (música en espera) o tono de marcado";
$text['desc-ringback']['es-mx'] = "Defina qué desea escuchar mientras se llama al destinatario. Las opciones son música (música en espera) o tono de marcado";
$text['desc-ringback']['fr-ca'] = "Défini ce vous entendrez pendant que la destination sera appelée. Les choix sont musique (musique d'attente) sonnerie.";
@@ -534,6 +556,7 @@ $text['opt-usring']['ar-eg'] = "us-ring";
$text['opt-usring']['de-at'] = "us-ring";
$text['opt-usring']['de-ch'] = "us-ring";
$text['opt-usring']['de-de'] = "us-ring";
$text['opt-usring']['el-gr'] = "us-ring";
$text['opt-usring']['es-cl'] = "us-ring";
$text['opt-usring']['es-mx'] = "us-ring";
$text['opt-usring']['fr-ca'] = "us-ring";
@@ -558,6 +581,7 @@ $text['opt-frring']['ar-eg'] = "fr-ring";
$text['opt-frring']['de-at'] = "fr-ring";
$text['opt-frring']['de-ch'] = "fr-ring";
$text['opt-frring']['de-de'] = "fr-ring";
$text['opt-frring']['el-gr'] = "fr-ring";
$text['opt-frring']['es-cl'] = "fr-ring";
$text['opt-frring']['es-mx'] = "fr-ring";
$text['opt-frring']['fr-ca'] = "fr-ring";
@@ -582,6 +606,7 @@ $text['opt-ptring']['ar-eg'] = "pt-ring";
$text['opt-ptring']['de-at'] = "pt-ring";
$text['opt-ptring']['de-ch'] = "pt-ring";
$text['opt-ptring']['de-de'] = "pt-ring";
$text['opt-ptring']['el-gr'] = "pt-ring";
$text['opt-ptring']['es-cl'] = "pt-ring";
$text['opt-ptring']['es-mx'] = "pt-ring";
$text['opt-ptring']['fr-ca'] = "pt-ring";
@@ -606,6 +631,7 @@ $text['opt-ukring']['ar-eg'] = "uk-ring";
$text['opt-ukring']['de-at'] = "uk-ring";
$text['opt-ukring']['de-ch'] = "uk-ring";
$text['opt-ukring']['de-de'] = "uk-ring";
$text['opt-ukring']['el-gr'] = "uk-ring";
$text['opt-ukring']['es-cl'] = "uk-ring";
$text['opt-ukring']['es-mx'] = "uk-ring";
$text['opt-ukring']['fr-ca'] = "uk-ring";
@@ -630,6 +656,7 @@ $text['opt-rsring']['ar-eg'] = "rs-ring";
$text['opt-rsring']['de-at'] = "rs-ring";
$text['opt-rsring']['de-ch'] = "rs-ring";
$text['opt-rsring']['de-de'] = "rs-ring";
$text['opt-rsring']['el-gr'] = "rs-ring";
$text['opt-rsring']['es-cl'] = "rs-ring";
$text['opt-rsring']['es-mx'] = "rs-ring";
$text['opt-rsring']['fr-ca'] = "rs-ring";
@@ -654,6 +681,7 @@ $text['opt-ruring']['ar-eg'] = "ru-ring";
$text['opt-ruring']['de-at'] = "ru-ring";
$text['opt-ruring']['de-ch'] = "ru-ring";
$text['opt-ruring']['de-de'] = "ru-ring";
$text['opt-ruring']['el-gr'] = "ru-ring";
$text['opt-ruring']['es-cl'] = "ru-ring";
$text['opt-ruring']['es-mx'] = "ru-ring";
$text['opt-ruring']['fr-ca'] = "ru-ring";
@@ -678,6 +706,7 @@ $text['opt-itring']['ar-eg'] = "it-ring";
$text['opt-itring']['de-at'] = "it-ring";
$text['opt-itring']['de-ch'] = "it-ring";
$text['opt-itring']['de-de'] = "it-ring";
$text['opt-itring']['el-gr'] = "it-ring";
$text['opt-itring']['es-cl'] = "it-ring";
$text['opt-itring']['es-mx'] = "it-ring";
$text['opt-itring']['fr-ca'] = "it-ring";
@@ -702,6 +731,7 @@ $text['opt-dering']['ar-eg'] = "de-ring";
$text['opt-dering']['de-at'] = "de-ring";
$text['opt-dering']['de-ch'] = "de-ring";
$text['opt-dering']['de-de'] = "de-ring";
$text['opt-dering']['el-gr'] = "de-ring";
$text['opt-dering']['es-cl'] = "de-ring";
$text['opt-dering']['es-mx'] = "de-ring";
$text['opt-dering']['fr-ca'] = "de-ring";
@@ -726,6 +756,7 @@ $text['opt-moh']['ar-eg'] = "موسيقى";
$text['opt-moh']['de-at'] = "Musik";
$text['opt-moh']['de-ch'] = "Musik";
$text['opt-moh']['de-de'] = "Musik";
$text['opt-moh']['el-gr'] = "ΜΟΥΣΙΚΗ";
$text['opt-moh']['es-cl'] = "musica";
$text['opt-moh']['es-mx'] = "musica";
$text['opt-moh']['fr-ca'] = "musique";
@@ -750,6 +781,7 @@ $text['button-call']['ar-eg'] = "يتصل";
$text['button-call']['de-at'] = "Anrufen";
$text['button-call']['de-ch'] = "Anrufen";
$text['button-call']['de-de'] = "Anrufen";
$text['button-call']['el-gr'] = "Κλήση";
$text['button-call']['es-cl'] = "Llamar";
$text['button-call']['es-mx'] = "Llamar";
$text['button-call']['fr-ca'] = "appel";
+103 -104
View File
@@ -93,124 +93,120 @@
}
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
$esl = event_socket::create();
if ($esl->is_connected()) {
//set call uuid
$origination_uuid = trim(event_socket_request($fp, "api create_uuid"));
//set call uuid
$origination_uuid = trim(event_socket::api("create_uuid"));
//add record path and name
if ($rec == "true") {
$record_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d");
if (isset($_SESSION['recordings']['extension']['text'])) {
$record_extension = $_SESSION['recordings']['extension']['text'];
}
else {
$record_extension = 'wav';
}
if (isset($_SESSION['recordings']['template']['text'])) {
//${year}${month}${day}-${caller_id_number}-${caller_destination}-${uuid}.${record_extension}
$record_name = $_SESSION['recordings']['template']['text'];
$record_name = str_replace('${year}', date("Y"), $record_name);
$record_name = str_replace('${month}', date("M"), $record_name);
$record_name = str_replace('${day}', date("d"), $record_name);
$record_name = str_replace('${source}', $src, $record_name);
$record_name = str_replace('${caller_id_name}', $src_cid_name, $record_name);
$record_name = str_replace('${caller_id_number}', $src_cid_number, $record_name);
$record_name = str_replace('${caller_destination}', $dest, $record_name);
$record_name = str_replace('${destination}', $dest, $record_name);
$record_name = str_replace('${uuid}', $origination_uuid, $record_name);
$record_name = str_replace('${record_extension}', $record_extension, $record_name);
}
else {
$record_name = $origination_uuid.'.'.$record_extension;
}
}
//determine call direction
$dir = (user_exists($dest)) ? 'local' : 'outbound';
//define a leg - set source to display the defined caller id name and number
$source_common = "{";
$source_common .= "click_to_call=true";
$source_common .= ",origination_caller_id_name='".$src_cid_name."'";
$source_common .= ",origination_caller_id_number=".$src_cid_number;
$source_common .= ",instant_ringback=true";
$source_common .= ",ringback=".$ringback_value;
$source_common .= ",presence_id=".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
$source_common .= ",call_direction=".$dir;
if ($rec == "true") {
$source_common .= ",record_path='".$record_path."'";
$source_common .= ",record_name='".$record_name."'";
}
if (user_exists($src)) {
//source is a local extension
$source = $source_common.$sip_auto_answer.
",domain_uuid=".$domain_uuid.
",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
//source is an external number
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $src);
$source = $source_common."}".$bridge_array[0];
}
unset($source_common);
//define b leg - set destination to display the defined caller id name and number
$destination_common = " &bridge({origination_caller_id_name='".$dest_cid_name."',origination_caller_id_number=".$dest_cid_number;
if (user_exists($dest)) {
//destination is a local extension
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
else {
//local extension (source) > external number (destination)
if (user_exists($src) && empty($dest_cid_number)) {
//retrieve outbound caller id from the (source) extension
$sql = "select outbound_caller_id_name, outbound_caller_id_number from v_extensions where domain_uuid = :domain_uuid and extension = :src ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['src'] = $src;
$database = new database;
$result = $database->select($sql, $parameters, 'all');
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
//add record path and name
if ($rec == "true") {
$record_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d");
if (isset($_SESSION['recordings']['extension']['text'])) {
$record_extension = $_SESSION['recordings']['extension']['text'];
}
else {
$record_extension = 'wav';
}
if (isset($_SESSION['recordings']['template']['text'])) {
//${year}${month}${day}-${caller_id_number}-${caller_destination}-${uuid}.${record_extension}
$record_name = $_SESSION['recordings']['template']['text'];
$record_name = str_replace('${year}', date("Y"), $record_name);
$record_name = str_replace('${month}', date("M"), $record_name);
$record_name = str_replace('${day}', date("d"), $record_name);
$record_name = str_replace('${source}', $src, $record_name);
$record_name = str_replace('${caller_id_name}', $src_cid_name, $record_name);
$record_name = str_replace('${caller_id_number}', $src_cid_number, $record_name);
$record_name = str_replace('${caller_destination}', $dest, $record_name);
$record_name = str_replace('${destination}', $dest, $record_name);
$record_name = str_replace('${uuid}', $origination_uuid, $record_name);
$record_name = str_replace('${record_extension}', $record_extension, $record_name);
}
else {
$record_name = $origination_uuid.'.'.$record_extension;
}
}
if (permission_exists('click_to_call_call')) {
//determine call direction
$dir = (user_exists($dest)) ? 'local' : 'outbound';
//define a leg - set source to display the defined caller id name and number
$source_common = "{";
$source_common .= "click_to_call=true";
$source_common .= ",origination_caller_id_name='".$src_cid_name."'";
$source_common .= ",origination_caller_id_number=".$src_cid_number;
$source_common .= ",instant_ringback=true";
$source_common .= ",ringback=".$ringback_value;
$source_common .= ",presence_id=".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
$source_common .= ",call_direction=".$dir;
if ($rec == "true") {
$source_common .= ",record_path='".$record_path."'";
$source_common .= ",record_name='".$record_name."'";
}
if (user_exists($src)) {
//source is a local extension
$source = $source_common.$sip_auto_answer.
",domain_uuid=".$domain_uuid.
",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
//source is an external number
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $src);
$source = $source_common."}".$bridge_array[0];
}
unset($source_common);
//define b leg - set destination to display the defined caller id name and number
$destination_common = " &bridge({origination_caller_id_name='".$dest_cid_name."',origination_caller_id_number=".$dest_cid_number;
if (user_exists($dest)) {
//destination is a local extension
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $dest);
//$switch_cmd = $destination_common."}".$bridge_array[0].")"; // wouldn't set cdr destination correctly, so below used instead
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
}
unset($destination_common);
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
else {
//local extension (source) > external number (destination)
if (user_exists($src) && empty($dest_cid_number)) {
//retrieve outbound caller id from the (source) extension
$sql = "select outbound_caller_id_name, outbound_caller_id_number from v_extensions where domain_uuid = :domain_uuid and extension = :src ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['src'] = $src;
$database = new database;
$result = $database->select($sql, $parameters, 'all');
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
}
}
if (permission_exists('click_to_call_call')) {
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $dest);
//$switch_cmd = $destination_common."}".$bridge_array[0].")"; // wouldn't set cdr destination correctly, so below used instead
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
}
unset($destination_common);
} else {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
else {
//ensure we are still connected and send the event socket command
if ($esl->is_connected()) {
//display the last command
$switch_cmd = "api originate ".$source.$switch_cmd;
$switch_cmd = "originate ".$source.$switch_cmd;
echo "<div align='center'><strong>".escape($src)." has called ".escape($dest)."</strong></div>\n";
//show the command result
$result = trim(event_socket_request($fp, $switch_cmd));
$result = trim(event_socket::api($switch_cmd));
if (substr($result, 0,3) == "+OK") {
//$uuid = substr($result, 4);
if ($rec == "true") {
@@ -218,12 +214,15 @@
date_default_timezone_set($_SESSION['time_zone']['system']);
//create the api record command and send it over event socket
if (is_uuid($origination_uuid) && file_exists($record_path)) {
$switch_cmd = "api uuid_record ".$origination_uuid." start ".$record_path."/".$record_name;
$switch_cmd = "uuid_record $origination_uuid start $record_path/$record_name";
}
$result2 = trim(event_socket_request($fp, $switch_cmd));
$result2 = trim(event_socket::api($switch_cmd));
}
}
echo "<div align='center'><br />".escape($result)."<br /><br /></div>\n";
} else {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
}
@@ -427,7 +426,7 @@
echo "<tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " <input type=\"submit\" class='btn' value=\"".$text['button-call']."\">\n";
echo " <button type='submit' class='btn btn-default'><i class='fas fa-phone fa-lg'></i>&nbsp;&nbsp;&nbsp;".$text['button-call']."</button>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
+2 -1
View File
@@ -35,8 +35,9 @@
$apps[$x]['destinations'][$y]['label'] = "conference_centers";
$apps[$x]['destinations'][$y]['name'] = "conference_centers";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and conference_center_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "conference_center_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(conference_center_extension) asc";
$apps[$x]['destinations'][$y]['field']['conference_center_uuid'] = "conference_center_uuid";
$apps[$x]['destinations'][$y]['field']['uuid'] = "conference_center_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "conference_center_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "conference_center_extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "conference_center_extension";
+114 -31
View File
@@ -6,6 +6,7 @@ $text['title-conference_centers']['ar-eg'] = "مراكز المؤتمرات";
$text['title-conference_centers']['de-at'] = "Konferenz Zentralen";
$text['title-conference_centers']['de-ch'] = "Konferenz Zentralen";
$text['title-conference_centers']['de-de'] = "Konferenz Zentralen";
$text['title-conference_centers']['el-gr'] = "Συνεδριακά Κέντρα";
$text['title-conference_centers']['es-cl'] = "Centro de Conferencias";
$text['title-conference_centers']['es-mx'] = "Centro de Conferencias";
$text['title-conference_centers']['fr-ca'] = "Centre de conférence";
@@ -30,6 +31,7 @@ $text['title-conference_center']['ar-eg'] = "مركز المؤتمرات";
$text['title-conference_center']['de-at'] = "Konferenz Zentrale";
$text['title-conference_center']['de-ch'] = "Konferenz Zentrale";
$text['title-conference_center']['de-de'] = "Konferenz Zentrale";
$text['title-conference_center']['el-gr'] = "Συνεδριακό Κέντρο";
$text['title-conference_center']['es-cl'] = "Centro de Conferencia";
$text['title-conference_center']['es-mx'] = "Centro de Conferencia";
$text['title-conference_center']['fr-ca'] = "Centre de conférence";
@@ -54,6 +56,7 @@ $text['title_description-conference_centers']['ar-eg'] = "مراكز المؤت
$text['title_description-conference_centers']['de-at'] = "Konferenz-Zentralen sind Gruppen mehrerer Konferenzräume. Diese können anhand diverser Kriterien organisiert werden.";
$text['title_description-conference_centers']['de-ch'] = "Konferenz-Zentralen sind Gruppen mehrerer Konferenzräume. Diese können anhand diverser Kriterien organisiert werden.";
$text['title_description-conference_centers']['de-de'] = "Konferenz-Zentralen sind Gruppen mehrerer Konferenzräume. Diese können anhand diverser Kriterien organisiert werden.";
$text['title_description-conference_centers']['el-gr'] = "Τα Συνεδριακά Κέντρα είναι μια ομάδα αιθουσών συνεδριάσεων. Μπορούν να οργανωθούν ανά κέντρο κόστους, γεωγραφικά ή άλλα κριτήρια.";
$text['title_description-conference_centers']['es-cl'] = "Los Centros de Conferencias son un grupo de salas de conferencias. Estas se organizan por centro de costo, geográficamente u otro criterio.";
$text['title_description-conference_centers']['es-mx'] = "Los Centros de Conferencias son un grupo de salas de conferencias. Estas se organizan por centro de costo, geográficamente u otro criterio.";
$text['title_description-conference_centers']['fr-ca'] = "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.";
@@ -78,6 +81,7 @@ $text['title_description-conference_rooms']['ar-eg'] = "غرف المؤتمرا
$text['title_description-conference_rooms']['de-at'] = "Konferenzräume sind individuelle Treffpunkte innerhalb eines Konferenzzentrums.";
$text['title_description-conference_rooms']['de-ch'] = "Konferenzräume sind individuelle Treffpunkte innerhalb eines Konferenzzentrums.";
$text['title_description-conference_rooms']['de-de'] = "Konferenzräume sind individuelle Treffpunkte innerhalb eines Konferenzzentrums.";
$text['title_description-conference_rooms']['el-gr'] = "Οι Αίθουσες Συνεδριάσεων είναι μεμονωμένοι χώροι συνάντησης μέσα σε ένα Συνεδριακό Κέντρο.";
$text['title_description-conference_rooms']['es-cl'] = "Las salas de conferencias son lugares de reunión individuales dentro de un centro de conferencias.";
$text['title_description-conference_rooms']['es-mx'] = "Las salas de conferencias son lugares de reunión individuales dentro de un centro de conferencias.";
$text['title_description-conference_rooms']['fr-ca'] = "Les salles de conférence sont des lieux de réunion individuels au sein d'un centre de conférence.";
@@ -102,6 +106,7 @@ $text['label-conference_center_name']['ar-eg'] = "اسم";
$text['label-conference_center_name']['de-at'] = "Name";
$text['label-conference_center_name']['de-ch'] = "Name";
$text['label-conference_center_name']['de-de'] = "Name";
$text['label-conference_center_name']['el-gr'] = "Ονομα";
$text['label-conference_center_name']['es-cl'] = "Nombre";
$text['label-conference_center_name']['es-mx'] = "Nombre";
$text['label-conference_center_name']['fr-ca'] = "Nom";
@@ -126,6 +131,7 @@ $text['description-conference_center_name']['ar-eg'] = "أدخل اسم مركز
$text['description-conference_center_name']['de-at'] = "Geben Sie den Namen der Konferenz-Zentrale an.";
$text['description-conference_center_name']['de-ch'] = "Geben Sie den Namen der Konferenz-Zentrale an.";
$text['description-conference_center_name']['de-de'] = "Geben Sie den Namen der Konferenz-Zentrale an.";
$text['description-conference_center_name']['el-gr'] = "Εισαγάγετε το όνομα του συνεδριακού κέντρου.";
$text['description-conference_center_name']['es-cl'] = "Ingrese el nombre del centro de conferencia";
$text['description-conference_center_name']['es-mx'] = "Ingrese el nombre del centro de conferencia";
$text['description-conference_center_name']['fr-ca'] = "Entrez le nom du centre de conférence.";
@@ -150,6 +156,7 @@ $text['label-conference_center_extension']['ar-eg'] = "امتداد";
$text['label-conference_center_extension']['de-at'] = "Nebenstelle";
$text['label-conference_center_extension']['de-ch'] = "Nebenstelle";
$text['label-conference_center_extension']['de-de'] = "Nebenstelle";
$text['label-conference_center_extension']['el-gr'] = "Επέκταση";
$text['label-conference_center_extension']['es-cl'] = "Extensión";
$text['label-conference_center_extension']['es-mx'] = "Extensión";
$text['label-conference_center_extension']['fr-ca'] = "Extension";
@@ -174,6 +181,7 @@ $text['description-conference_center_extension']['ar-eg'] = "أدخل الرقم
$text['description-conference_center_extension']['de-at'] = "Geben Sie eine Nebenstelle für die Konferenz-Zentrale an.";
$text['description-conference_center_extension']['de-ch'] = "Geben Sie eine Nebenstelle für die Konferenz-Zentrale an.";
$text['description-conference_center_extension']['de-de'] = "Geben Sie eine Nebenstelle für die Konferenz-Zentrale an.";
$text['description-conference_center_extension']['el-gr'] = "Εισαγάγετε τον αριθμό επέκτασης του συνεδριακού κέντρου.";
$text['description-conference_center_extension']['es-cl'] = "Ingrese el número de extensión del centro de conferencia";
$text['description-conference_center_extension']['es-mx'] = "Ingrese el número de extensión del centro de conferencia";
$text['description-conference_center_extension']['fr-ca'] = "Entrez le numéro de poste du centre de conférence.";
@@ -198,6 +206,7 @@ $text['label-conference_center_pin_length']['ar-eg'] = "طول PIN";
$text['label-conference_center_pin_length']['de-at'] = "PIN länge";
$text['label-conference_center_pin_length']['de-ch'] = "PIN länge";
$text['label-conference_center_pin_length']['de-de'] = "PIN länge";
$text['label-conference_center_pin_length']['el-gr'] = "Μήκος PIN";
$text['label-conference_center_pin_length']['es-cl'] = "Largo de PIN";
$text['label-conference_center_pin_length']['es-mx'] = "Largo de PIN";
$text['label-conference_center_pin_length']['fr-ca'] = "longueur du code PIN";
@@ -210,7 +219,7 @@ $text['label-conference_center_pin_length']['pt-br'] = "Tamanho do PIN";
$text['label-conference_center_pin_length']['pt-pt'] = "Tamanho do PIN";
$text['label-conference_center_pin_length']['ro-ro'] = "Lungimea PIN-ului";
$text['label-conference_center_pin_length']['ru-ru'] = "Длина PIN кода";
$text['label-conference_center_pin_length']['sv-se'] = "PIN Längd";
$text['label-conference_center_pin_length']['sv-se'] = "Pinkod Längd";
$text['label-conference_center_pin_length']['uk-ua'] = "Довжина PIN-коду ";
$text['label-conference_center_pin_length']['zh-cn'] = "胎体长度";
$text['label-conference_center_pin_length']['ja-jp'] = "PINの長さ";
@@ -222,6 +231,7 @@ $text['description-conference_center_pin_length']['ar-eg'] = "أدخل الحد
$text['description-conference_center_pin_length']['de-at'] = "Geben sie die minimale PIN länge an.";
$text['description-conference_center_pin_length']['de-ch'] = "Geben sie die minimale PIN länge an.";
$text['description-conference_center_pin_length']['de-de'] = "Geben sie die minimale PIN länge an.";
$text['description-conference_center_pin_length']['el-gr'] = "Εισαγάγετε το ελάχιστο μήκος PIN.";
$text['description-conference_center_pin_length']['es-cl'] = "Ingrese el largo de PIN requerido.";
$text['description-conference_center_pin_length']['es-mx'] = "Ingrese el largo de PIN requerido.";
$text['description-conference_center_pin_length']['fr-ca'] = "Choisir la longueur requise pour le code d'authentification.";
@@ -234,7 +244,7 @@ $text['description-conference_center_pin_length']['pt-br'] = "Insira o tamanho m
$text['description-conference_center_pin_length']['pt-pt'] = "Introduza o tamanho do código PIN";
$text['description-conference_center_pin_length']['ro-ro'] = "Introduceți lungimea minimă a codului PIN.";
$text['description-conference_center_pin_length']['ru-ru'] = "Введите минимальную длину PIN кода.";
$text['description-conference_center_pin_length']['sv-se'] = "Ange minimum PIN längd.";
$text['description-conference_center_pin_length']['sv-se'] = "Ange minimum längd for pinkod.";
$text['description-conference_center_pin_length']['uk-ua'] = "Введіть мінімальну довжину PIN-коду.";
$text['description-conference_center_pin_length']['zh-cn'] = "进入最低生活标准长度。";
$text['description-conference_center_pin_length']['ja-jp'] = "最小PIN番号を入力してください。";
@@ -243,20 +253,21 @@ $text['description-conference_center_pin_length']['ko-kr'] = "최소 PIN 길이
$text['label-email_address']['en-us'] = "Email Address";
$text['label-email_address']['en-gb'] = "Email Address";
$text['label-email_address']['ar-eg'] = "البريد الإليكتروني";
$text['label-email_address']['de-at'] = "Email Address";
$text['label-email_address']['de-ch'] = "Email Address";
$text['label-email_address']['de-de'] = "Email Address";
$text['label-email_address']['es-cl'] = "Email Address";
$text['label-email_address']['es-mx'] = "Email Address";
$text['label-email_address']['de-at'] = "E-Mail-Adresse";
$text['label-email_address']['de-ch'] = "E-Mail-Adresse";
$text['label-email_address']['de-de'] = "E-Mail-Adresse";
$text['label-email_address']['el-gr'] = "Διεύθυνση ηλεκτρονικού ταχυδρομείου";
$text['label-email_address']['es-cl'] = "Dirección de correo electrónico";
$text['label-email_address']['es-mx'] = "Dirección de correo electrónico";
$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'] = "Email Address";
$text['label-email_address']['it-it'] = "Indirizzo e-mail";
$text['label-email_address']['nl-nl'] = "E-mail Address";
$text['label-email_address']['pl-pl'] = "Email Address";
$text['label-email_address']['pt-br'] = "Email Address";
$text['label-email_address']['pt-pt'] = "Email Address";
$text['label-email_address']['ro-ro'] = "Email Address";
$text['label-email_address']['pl-pl'] = "Adres e-mail";
$text['label-email_address']['pt-br'] = "Endereço de email";
$text['label-email_address']['pt-pt'] = "Endereço de email";
$text['label-email_address']['ro-ro'] = "Adresa de e-mail";
$text['label-email_address']['ru-ru'] = "Электронная Почта";
$text['label-email_address']['sv-se'] = "E-post";
$text['label-email_address']['uk-ua'] = "Електронна пошта";
@@ -266,21 +277,22 @@ $text['label-email_address']['ko-kr'] = "이메일 주소";
$text['description-email_address']['en-us'] = "Optional conference email address.";
$text['description-email_address']['en-gb'] = "Optional conference email address.";
$text['description-email_address']['ar-eg'] = "البريد الإليكتروني";
$text['description-email_address']['de-at'] = "Optional conference email address.";
$text['description-email_address']['de-ch'] = "Optional conference email address.";
$text['description-email_address']['de-de'] = "Optional conference email address.";
$text['description-email_address']['es-cl'] = "Optional conference email address.";
$text['description-email_address']['es-mx'] = "Optional conference email address.";
$text['description-email_address']['fr-ca'] = "Courriel";
$text['description-email_address']['fr-fr'] = "Courriel";
$text['description-email_address']['ar-eg'] = "البريد عنوان البريد الإلكتروني الاختياري للمؤتمر.";
$text['description-email_address']['de-at'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['de-ch'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['de-de'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['el-gr'] = "Προαιρετική διεύθυνση email συνεδρίου.";
$text['description-email_address']['es-cl'] = "Dirección de correo electrónico de la conferencia opcional.";
$text['description-email_address']['es-mx'] = "Dirección de correo electrónico de la conferencia opcional.";
$text['description-email_address']['fr-ca'] = "Adresse e-mail de la conférence facultative.";
$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'] = "Optional conference email address.";
$text['description-email_address']['it-it'] = "Indirizzo e-mail facoltativo della conferenza.";
$text['description-email_address']['nl-nl'] = "Optional conference E-mail Address";
$text['description-email_address']['pl-pl'] = "Optional conference email address.";
$text['description-email_address']['pt-br'] = "Optional conference email address.";
$text['description-email_address']['pt-pt'] = "Optional conference email address.";
$text['description-email_address']['ro-ro'] = "Optional conference email 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.";
$text['description-email_address']['pt-pt'] = "Endereço de e-mail de conferência opcional.";
$text['description-email_address']['ro-ro'] = "Opțional adresa de e-mail a conferinței.";
$text['description-email_address']['ru-ru'] = "Электронная Почта";
$text['description-email_address']['sv-se'] = "E-post";
$text['description-email_address']['uk-ua'] = "Електронна пошта";
@@ -294,6 +306,7 @@ $text['label-conference_center_greeting']['ar-eg'] = "تحية";
$text['label-conference_center_greeting']['de-at'] = "Begrüßung";
$text['label-conference_center_greeting']['de-ch'] = "Begrüßung";
$text['label-conference_center_greeting']['de-de'] = "Begrüßung";
$text['label-conference_center_greeting']['el-gr'] = "Χαιρετισμός";
$text['label-conference_center_greeting']['es-cl'] = "Mensaje";
$text['label-conference_center_greeting']['es-mx'] = "Mensaje";
$text['label-conference_center_greeting']['fr-ca'] = "Message";
@@ -318,6 +331,7 @@ $text['description-conference_center_greeting']['ar-eg'] = "حدد التحية
$text['description-conference_center_greeting']['de-at'] = "Wählen Sie die Begrüßung für den Konferenzraum.";
$text['description-conference_center_greeting']['de-ch'] = "Wählen Sie die Begrüßung für den Konferenzraum.";
$text['description-conference_center_greeting']['de-de'] = "Wählen Sie die Begrüßung für den Konferenzraum.";
$text['description-conference_center_greeting']['el-gr'] = "Επιλέξτε τον χαιρετισμό που παίζεται πριν μπείτε στην αίθουσα συνεδριάσεων. Σημείωση: Δεν θα αναπαραχθεί καμία ερώτηση PIN.";
$text['description-conference_center_greeting']['es-cl'] = "Seleccione el saludo que se juega antes de unirse a la sala de conferencias.";
$text['description-conference_center_greeting']['es-mx'] = "Seleccione el saludo que se juega antes de unirse a la sala de conferencias.";
$text['description-conference_center_greeting']['fr-ca'] = "Sélectionnez le message qui a joué avant de rejoindre la salle de conférence.";
@@ -342,6 +356,7 @@ $text['label-account_code']['ar-eg'] = "رمز الحساب";
$text['label-account_code']['de-at'] = "Kontoschlüssel";
$text['label-account_code']['de-ch'] = "Kontoschlüssel";
$text['label-account_code']['de-de'] = "Kontoschlüssel";
$text['label-account_code']['el-gr'] = "Κωδικός λογαριασμού";
$text['label-account_code']['es-cl'] = "Código de Cuenta";
$text['label-account_code']['es-mx'] = "Código de Cuenta";
$text['label-account_code']['fr-ca'] = "Centre de frais";
@@ -366,6 +381,7 @@ $text['description-account_code']['ar-eg'] = "أدخل رمز الحساب هن
$text['description-account_code']['de-at'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['de-ch'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['de-de'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['el-gr'] = "Εισαγάγετε τον κωδικό λογαριασμού εδώ.";
$text['description-account_code']['es-cl'] = "Ingrese el código de cuenta aquí.";
$text['description-account_code']['es-mx'] = "Ingrese el código de cuenta aquí.";
$text['description-account_code']['fr-ca'] = "Entrez le code de compte ici.";
@@ -390,6 +406,7 @@ $text['label-conference_center_enabled']['ar-eg'] = "ممكن";
$text['label-conference_center_enabled']['de-at'] = "An";
$text['label-conference_center_enabled']['de-ch'] = "An";
$text['label-conference_center_enabled']['de-de'] = "An";
$text['label-conference_center_enabled']['el-gr'] = "Ενεργοποιήθηκε";
$text['label-conference_center_enabled']['es-cl'] = "Activado";
$text['label-conference_center_enabled']['es-mx'] = "Activado";
$text['label-conference_center_enabled']['fr-ca'] = "Actif";
@@ -414,6 +431,7 @@ $text['description-conference_center_enabled']['ar-eg'] = "حدد ما إذا ك
$text['description-conference_center_enabled']['de-at'] = "Wählen Sie ob die Konferenz-Zentrale Ein- oder Ausgeschaltet werden soll.";
$text['description-conference_center_enabled']['de-ch'] = "Wählen Sie ob die Konferenz-Zentrale Ein- oder Ausgeschaltet werden soll.";
$text['description-conference_center_enabled']['de-de'] = "Wählen Sie ob die Konferenz-Zentrale Ein- oder Ausgeschaltet werden soll.";
$text['description-conference_center_enabled']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιήσετε ή θα απενεργοποιήσετε το συνεδριακό κέντρο.";
$text['description-conference_center_enabled']['es-cl'] = "Indique si desea activar o desactivar el centro de conferencia.";
$text['description-conference_center_enabled']['es-mx'] = "Indique si desea activar o desactivar el centro de conferencia.";
$text['description-conference_center_enabled']['fr-ca'] = "Choisir d'activer ou non la conférence.";
@@ -438,6 +456,7 @@ $text['label-conference_center_description']['ar-eg'] = "وصف";
$text['label-conference_center_description']['de-at'] = "Beschreibung";
$text['label-conference_center_description']['de-ch'] = "Beschreibung";
$text['label-conference_center_description']['de-de'] = "Beschreibung";
$text['label-conference_center_description']['el-gr'] = "Περιγραφή";
$text['label-conference_center_description']['es-cl'] = "Descripción";
$text['label-conference_center_description']['es-mx'] = "Descripción";
$text['label-conference_center_description']['fr-ca'] = "Description";
@@ -462,6 +481,7 @@ $text['title-conference_sessions']['ar-eg'] = "Conference Sessions";
$text['title-conference_sessions']['de-at'] = "Konferenz-Sitzungen";
$text['title-conference_sessions']['de-ch'] = "Konferenz-Sitzungen";
$text['title-conference_sessions']['de-de'] = "Konferenz-Sitzungen";
$text['title-conference_sessions']['el-gr'] = "Συνεδρίες Συνεδρίου";
$text['title-conference_sessions']['es-cl'] = "Sesiones de Conferencia";
$text['title-conference_sessions']['es-mx'] = "Sesiones de Conferencia";
$text['title-conference_sessions']['fr-ca'] = "Sessions de conférences";
@@ -486,6 +506,7 @@ $text['title-conference_session_details']['ar-eg'] = "تفاصيل جلسة ال
$text['title-conference_session_details']['de-at'] = "Details der Konferenz-Sitzung";
$text['title-conference_session_details']['de-ch'] = "Details der Konferenz-Sitzung";
$text['title-conference_session_details']['de-de'] = "Details der Konferenz-Sitzung";
$text['title-conference_session_details']['el-gr'] = "Λεπτομέρειες Συνεδρίας Συνεδρίου";
$text['title-conference_session_details']['es-cl'] = "Detalles de la Sesión de Conferencia";
$text['title-conference_session_details']['es-mx'] = "Detalles de la Sesión de Conferencia";
$text['title-conference_session_details']['fr-ca'] = "Détails de Sessions de Conference";
@@ -510,6 +531,7 @@ $text['title-conference_rooms']['ar-eg'] = "غرف المؤتمرات";
$text['title-conference_rooms']['de-at'] = "Konferenzräume";
$text['title-conference_rooms']['de-ch'] = "Konferenzräume";
$text['title-conference_rooms']['de-de'] = "Konferenzräume";
$text['title-conference_rooms']['el-gr'] = "Αίθουσες συνεδριάσεων";
$text['title-conference_rooms']['es-cl'] = "Salas de conferencia";
$text['title-conference_rooms']['es-mx'] = "Salas de conferencia";
$text['title-conference_rooms']['fr-ca'] = "Salles de conférence";
@@ -534,6 +556,7 @@ $text['title-conference_room']['ar-eg'] = "غرفة المؤتمرات";
$text['title-conference_room']['de-at'] = "Konferenzraum";
$text['title-conference_room']['de-ch'] = "Konferenzraum";
$text['title-conference_room']['de-de'] = "Konferenzraum";
$text['title-conference_room']['el-gr'] = "Αίθουσα συνεδριάσεων";
$text['title-conference_room']['es-cl'] = "Sala de conferencia";
$text['title-conference_room']['es-mx'] = "Sala de conferencia";
$text['title-conference_room']['fr-ca'] = "Salle de conférence";
@@ -558,6 +581,7 @@ $text['message-unique_participant_pin']['ar-eg'] = "يرجى تقديم رقم P
$text['message-unique_participant_pin']['de-at'] = "Bitte geben Sie eine eindeutige PIN für die Teilnehmer an.";
$text['message-unique_participant_pin']['de-ch'] = "Bitte geben Sie eine eindeutige PIN für die Teilnehmer an.";
$text['message-unique_participant_pin']['de-de'] = "Bitte geben Sie eine eindeutige PIN für die Teilnehmer an.";
$text['message-unique_participant_pin']['el-gr'] = "Καταχωρίστε έναν μοναδικό αριθμό PIN Συμμετέχοντος.";
$text['message-unique_participant_pin']['es-cl'] = "Por favor ingrese su número PIN participante único.";
$text['message-unique_participant_pin']['es-mx'] = "Por favor ingrese su número PIN participante único.";
$text['message-unique_participant_pin']['fr-ca'] = "S'il vous plaît fournir un numéro unique PIN de participant.";
@@ -582,6 +606,7 @@ $text['message-unique_moderator_pin']['ar-eg'] = "يرجى تقديم رقم ت
$text['message-unique_moderator_pin']['de-at'] = "Bitte geben Sie eine eindeutige PIN für die Moderatoren an.";
$text['message-unique_moderator_pin']['de-ch'] = "Bitte geben Sie eine eindeutige PIN für die Moderatoren an.";
$text['message-unique_moderator_pin']['de-de'] = "Bitte geben Sie eine eindeutige PIN für die Moderatoren an.";
$text['message-unique_moderator_pin']['el-gr'] = "Καταχωρίστε έναν μοναδικό αριθμό PIN επόπτη.";
$text['message-unique_moderator_pin']['es-cl'] = "Por favor, proporcione un número único Moderador PIN.";
$text['message-unique_moderator_pin']['es-mx'] = "Por favor, proporcione un número único Moderador PIN.";
$text['message-unique_moderator_pin']['fr-ca'] = "S'il vous plaît fournir un numéro unique Modérateur PIN.";
@@ -606,6 +631,7 @@ $text['message-non_unique_pin']['ar-eg'] = "يجب أن يكون رقم التع
$text['message-non_unique_pin']['de-at'] = "Moderator und Teilnehmer PIN Nummern müssen eindeutig sein.";
$text['message-non_unique_pin']['de-ch'] = "Moderator und Teilnehmer PIN Nummern müssen eindeutig sein.";
$text['message-non_unique_pin']['de-de'] = "Moderator und Teilnehmer PIN Nummern müssen eindeutig sein.";
$text['message-non_unique_pin']['el-gr'] = "Οι αριθμοί PIN συντονιστή και συμμετεχόντων πρέπει να είναι μοναδικοί.";
$text['message-non_unique_pin']['es-cl'] = "Moderador números PIN y participante deben ser únicos.";
$text['message-non_unique_pin']['es-mx'] = "Moderador números PIN y participante deben ser únicos.";
$text['message-non_unique_pin']['fr-ca'] = "Numéros de modérateur et de PIN de participant doivent être uniques.";
@@ -630,6 +656,7 @@ $text['message-minimum_pin_length']['ar-eg'] = "الحد الأدنى لطول P
$text['message-minimum_pin_length']['de-at'] = "Minimale PIN länge erforderlich:";
$text['message-minimum_pin_length']['de-ch'] = "Minimale PIN länge erforderlich:";
$text['message-minimum_pin_length']['de-de'] = "Minimale PIN länge erforderlich:";
$text['message-minimum_pin_length']['el-gr'] = "Απαιτείται ελάχιστο μήκος PIN:";
$text['message-minimum_pin_length']['es-cl'] = "Longitud PIN mínima requerida:";
$text['message-minimum_pin_length']['es-mx'] = "Longitud PIN mínima requerida:";
$text['message-minimum_pin_length']['fr-ca'] = "Longueur de PIN minimum requis:";
@@ -654,6 +681,7 @@ $text['label-wait_moderator']['ar-eg'] = "يؤمن";
$text['label-wait_moderator']['de-at'] = "Geschützt";
$text['label-wait_moderator']['de-ch'] = "Geschützt";
$text['label-wait_moderator']['de-de'] = "Geschützt";
$text['label-wait_moderator']['el-gr'] = "Ασφαλής";
$text['label-wait_moderator']['es-cl'] = "Seguro";
$text['label-wait_moderator']['es-mx'] = "Seguro";
$text['label-wait_moderator']['fr-ca'] = "Assurer";
@@ -678,6 +706,7 @@ $text['label-wait_for_moderator']['ar-eg'] = "انتظر المنسق";
$text['label-wait_for_moderator']['de-at'] = "Warte auf Moderator";
$text['label-wait_for_moderator']['de-ch'] = "Warte auf Moderator";
$text['label-wait_for_moderator']['de-de'] = "Warte auf Moderator";
$text['label-wait_for_moderator']['el-gr'] = "Περιμένετε τον Επόπτη";
$text['label-wait_for_moderator']['es-cl'] = "Esperar un Moderador";
$text['label-wait_for_moderator']['es-mx'] = "Esperar un Moderador";
$text['label-wait_for_moderator']['fr-ca'] = "Attente du Modérateur";
@@ -702,6 +731,7 @@ $text['label-moderator_endconf']['ar-eg'] = "وسيط endconf";
$text['label-moderator_endconf']['de-at'] = "Moderator endconf";
$text['label-moderator_endconf']['de-ch'] = "Moderator endconf";
$text['label-moderator_endconf']['de-de'] = "Moderator endconf";
$text['label-moderator_endconf']['el-gr'] = "Επόπτης endconf";
$text['label-moderator_endconf']['es-cl'] = "Conferencia final del moderador";
$text['label-moderator_endconf']['es-mx'] = "Conferencia final del moderador";
$text['label-moderator_endconf']['fr-ca'] = "Endconf du modérateur";
@@ -726,6 +756,7 @@ $text['label-view']['ar-eg'] = "منظر";
$text['label-view']['de-at'] = "Ansicht";
$text['label-view']['de-ch'] = "Ansicht";
$text['label-view']['de-de'] = "Ansicht";
$text['label-view']['el-gr'] = "Θέα";
$text['label-view']['es-cl'] = "Ver";
$text['label-view']['es-mx'] = "Ver";
$text['label-view']['fr-ca'] = "Vue";
@@ -750,6 +781,7 @@ $text['label-uuid']['ar-eg'] = "UUID";
$text['label-uuid']['de-at'] = "UUID";
$text['label-uuid']['de-ch'] = "UUID";
$text['label-uuid']['de-de'] = "UUID";
$text['label-uuid']['el-gr'] = "UUID";
$text['label-uuid']['es-cl'] = "UUID";
$text['label-uuid']['es-mx'] = "UUID";
$text['label-uuid']['fr-ca'] = "UUID";
@@ -776,6 +808,7 @@ $text['label-users']['de-ch'] = "Benutzer";
$text['label-users']['de-de'] = "Benutzer";
$text['label-users']['es-cl'] = "Usuarios";
$text['label-users']['es-mx'] = "Usuarios";
$text['label-users']['el-gr'] = "Χρήστες";
$text['label-users']['fr-ca'] = "Utilisateurs";
$text['label-users']['fr-fr'] = "Utilisateurs";
$text['label-users']['he-il'] = "משתמשים";
@@ -798,6 +831,7 @@ $text['label-username']['ar-eg'] = "اسم المستخدم";
$text['label-username']['de-at'] = "Benutzername";
$text['label-username']['de-ch'] = "Benutzername";
$text['label-username']['de-de'] = "Benutzername";
$text['label-username']['el-gr'] = "Όνομα χρήστη";
$text['label-username']['es-cl'] = "Nombre de Usuario";
$text['label-username']['es-mx'] = "Nombre de Usuario";
$text['label-username']['fr-ca'] = "Nom d'Utilisateur";
@@ -822,6 +856,7 @@ $text['label-tools']['ar-eg'] = "أدوات";
$text['label-tools']['de-at'] = "Werkzeuge";
$text['label-tools']['de-ch'] = "Werkzeuge";
$text['label-tools']['de-de'] = "Werkzeuge";
$text['label-tools']['el-gr'] = "Εργαλεία";
$text['label-tools']['es-cl'] = "Herramientas";
$text['label-tools']['es-mx'] = "Herramientas";
$text['label-tools']['fr-ca'] = "Outils";
@@ -846,6 +881,7 @@ $text['label-to']['ar-eg'] = "ل";
$text['label-to']['de-at'] = "An";
$text['label-to']['de-ch'] = "An";
$text['label-to']['de-de'] = "An";
$text['label-to']['el-gr'] = "Προς την";
$text['label-to']['es-cl'] = "Final";
$text['label-to']['es-mx'] = "Final";
$text['label-to']['fr-ca'] = "Fin";
@@ -870,6 +906,7 @@ $text['label-time']['ar-eg'] = "وقت";
$text['label-time']['de-at'] = "Zeitzone";
$text['label-time']['de-ch'] = "Zeitzone";
$text['label-time']['de-de'] = "Zeitzone";
$text['label-time']['el-gr'] = "χρόνος";
$text['label-time']['es-cl'] = "Hora";
$text['label-time']['es-mx'] = "Hora";
$text['label-time']['fr-ca'] = "Heure";
@@ -894,6 +931,7 @@ $text['label-start']['ar-eg'] = "يبدأ";
$text['label-start']['de-at'] = "Start";
$text['label-start']['de-ch'] = "Start";
$text['label-start']['de-de'] = "Start";
$text['label-start']['el-gr'] = "Αρχή";
$text['label-start']['es-cl'] = "Inicio";
$text['label-start']['es-mx'] = "Inicio";
$text['label-start']['fr-ca'] = "Début";
@@ -918,6 +956,7 @@ $text['label-sounds']['ar-eg'] = "اصوات";
$text['label-sounds']['de-at'] = "Töne";
$text['label-sounds']['de-ch'] = "Töne";
$text['label-sounds']['de-de'] = "Töne";
$text['label-sounds']['el-gr'] = "Ήχοι";
$text['label-sounds']['es-cl'] = "Sonidos";
$text['label-sounds']['es-mx'] = "Sonidos";
$text['label-sounds']['fr-ca'] = "Sons";
@@ -942,6 +981,7 @@ $text['label-sessions']['ar-eg'] = "الجلسات";
$text['label-sessions']['de-at'] = "Sitzungen";
$text['label-sessions']['de-ch'] = "Sitzungen";
$text['label-sessions']['de-de'] = "Sitzungen";
$text['label-sessions']['el-gr'] = "Συνεδρίες";
$text['label-sessions']['es-cl'] = "Sesiones";
$text['label-sessions']['es-mx'] = "Sesiones";
$text['label-sessions']['fr-ca'] = "Sessions";
@@ -966,6 +1006,7 @@ $text['label-schedule']['ar-eg'] = "جدول";
$text['label-schedule']['de-at'] = "Zeitplan";
$text['label-schedule']['de-ch'] = "Zeitplan";
$text['label-schedule']['de-de'] = "Zeitplan";
$text['label-schedule']['el-gr'] = "Πρόγραμμα";
$text['label-schedule']['es-cl'] = "Horario";
$text['label-schedule']['es-mx'] = "Horario";
$text['label-schedule']['fr-ca'] = "Programme";
@@ -990,6 +1031,7 @@ $text['label-room-name']['ar-eg'] = "اسم الغرفة";
$text['label-room-name']['de-at'] = "Raum Name";
$text['label-room-name']['de-ch'] = "Raum Name";
$text['label-room-name']['de-de'] = "Raum Name";
$text['label-room-name']['el-gr'] = "Ονομα δωματίου";
$text['label-room-name']['es-cl'] = "Nombre de la Sala";
$text['label-room-name']['es-mx'] = "Nombre de la Sala";
$text['label-room-name']['fr-ca'] = "Nom de Chambre";
@@ -1014,6 +1056,7 @@ $text['label-recording']['ar-eg'] = "تسجيل";
$text['label-recording']['de-at'] = "Aufnahme";
$text['label-recording']['de-ch'] = "Aufnahme";
$text['label-recording']['de-de'] = "Aufnahme";
$text['label-recording']['el-gr'] = "Εγγραφή";
$text['label-recording']['es-cl'] = "Grabando";
$text['label-recording']['es-mx'] = "Grabando";
$text['label-recording']['fr-ca'] = "Enregistrement";
@@ -1038,6 +1081,7 @@ $text['label-record']['ar-eg'] = "سِجِلّ";
$text['label-record']['de-at'] = "Aufnehmen";
$text['label-record']['de-ch'] = "Aufnehmen";
$text['label-record']['de-de'] = "Aufnehmen";
$text['label-record']['el-gr'] = "Ρεκόρ";
$text['label-record']['es-cl'] = "Grabar";
$text['label-record']['es-mx'] = "Grabar";
$text['label-record']['fr-ca'] = "Enregistrer";
@@ -1062,6 +1106,7 @@ $text['label-profile']['ar-eg'] = "حساب تعريفي";
$text['label-profile']['de-at'] = "Profil";
$text['label-profile']['de-ch'] = "Profil";
$text['label-profile']['de-de'] = "Profil";
$text['label-profile']['el-gr'] = "Προφίλ";
$text['label-profile']['es-cl'] = "Perfil";
$text['label-profile']['es-mx'] = "Perfil";
$text['label-profile']['fr-ca'] = "Profil";
@@ -1086,6 +1131,7 @@ $text['label-play']['ar-eg'] = "يلعب";
$text['label-play']['de-at'] = "Abspielen";
$text['label-play']['de-ch'] = "Abspielen";
$text['label-play']['de-de'] = "Abspielen";
$text['label-play']['el-gr'] = "Παίζω";
$text['label-play']['es-cl'] = "Reproducir";
$text['label-play']['es-mx'] = "Reproducir";
$text['label-play']['fr-ca'] = "Jouer";
@@ -1110,6 +1156,7 @@ $text['label-participant-pin']['ar-eg'] = "مشارك";
$text['label-participant-pin']['de-at'] = "Teilnehmer";
$text['label-participant-pin']['de-ch'] = "Teilnehmer";
$text['label-participant-pin']['de-de'] = "Teilnehmer";
$text['label-participant-pin']['el-gr'] = "Συμμέτοχος";
$text['label-participant-pin']['es-cl'] = "Participante";
$text['label-participant-pin']['es-mx'] = "Participante";
$text['label-participant-pin']['fr-ca'] = "Code Participant";
@@ -1134,6 +1181,7 @@ $text['label-network-address']['ar-eg'] = "عنوان الشبكة";
$text['label-network-address']['de-at'] = "Netzwerk Adresse";
$text['label-network-address']['de-ch'] = "Netzwerk Adresse";
$text['label-network-address']['de-de'] = "Netzwerk Adresse";
$text['label-network-address']['el-gr'] = "Διεύθυνση δικτύου";
$text['label-network-address']['es-cl'] = "Dirección de Red";
$text['label-network-address']['es-mx'] = "Dirección de Red";
$text['label-network-address']['fr-ca'] = "Adresse Réseau";
@@ -1158,6 +1206,7 @@ $text['label-mute']['ar-eg'] = "صامت";
$text['label-mute']['de-at'] = "Stummschalten";
$text['label-mute']['de-ch'] = "Stummschalten";
$text['label-mute']['de-de'] = "Stummschalten";
$text['label-mute']['el-gr'] = "Βουβός";
$text['label-mute']['es-cl'] = "Mudo";
$text['label-mute']['es-mx'] = "Mudo";
$text['label-mute']['fr-ca'] = "Muet";
@@ -1182,6 +1231,7 @@ $text['label-moderator-pin']['ar-eg'] = "الوسيط";
$text['label-moderator-pin']['de-at'] = "Moderator";
$text['label-moderator-pin']['de-ch'] = "Moderator";
$text['label-moderator-pin']['de-de'] = "Moderator";
$text['label-moderator-pin']['el-gr'] = "Μεσολαβητής";
$text['label-moderator-pin']['es-cl'] = "Moderador";
$text['label-moderator-pin']['es-mx'] = "Moderador";
$text['label-moderator-pin']['fr-ca'] = "Modérateur";
@@ -1206,6 +1256,7 @@ $text['label-moderator']['ar-eg'] = "الوسيط";
$text['label-moderator']['de-at'] = "Moderator";
$text['label-moderator']['de-ch'] = "Moderator";
$text['label-moderator']['de-de'] = "Moderator";
$text['label-moderator']['el-gr'] = "Μεσολαβητής";
$text['label-moderator']['es-cl'] = "Moderador";
$text['label-moderator']['es-mx'] = "Moderador";
$text['label-moderator']['fr-ca'] = "Modérateur";
@@ -1230,6 +1281,7 @@ $text['label-members']['ar-eg'] = "عدد";
$text['label-members']['de-at'] = "Zähler";
$text['label-members']['de-ch'] = "Zähler";
$text['label-members']['de-de'] = "Zähler";
$text['label-members']['el-gr'] = "μετρώ";
$text['label-members']['es-cl'] = "Conteo";
$text['label-members']['es-mx'] = "Conteo";
$text['label-members']['fr-ca'] = "Décompte";
@@ -1254,6 +1306,7 @@ $text['label-member-type-participant']['ar-eg'] = "مشارك";
$text['label-member-type-participant']['de-at'] = "Teilnehmer";
$text['label-member-type-participant']['de-ch'] = "Teilnehmer";
$text['label-member-type-participant']['de-de'] = "Teilnehmer";
$text['label-member-type-participant']['el-gr'] = "συμμέτοχος";
$text['label-member-type-participant']['es-cl'] = "participante";
$text['label-member-type-participant']['es-mx'] = "participante";
$text['label-member-type-participant']['fr-ca'] = "participant";
@@ -1278,8 +1331,9 @@ $text['label-member-type-moderator']['ar-eg'] = "الوسيط";
$text['label-member-type-moderator']['de-at'] = "Moderator";
$text['label-member-type-moderator']['de-ch'] = "Moderator";
$text['label-member-type-moderator']['de-de'] = "Moderator";
$text['label-member-type-moderator']['es-cl'] = "moderador";
$text['label-member-type-moderator']['es-mx'] = "moderador";
$text['label-member-type-moderator']['el-gr'] = "μεσολαβητής";
$text['label-member-type-moderator']['es-cl'] = "moderadora";
$text['label-member-type-moderator']['es-mx'] = "moderadora";
$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'] = "מַנחֶה";
@@ -1302,6 +1356,7 @@ $text['label-member-pin']['ar-eg'] = "أرقام PIN";
$text['label-member-pin']['de-at'] = "PIN Nummern";
$text['label-member-pin']['de-ch'] = "PIN Nummern";
$text['label-member-pin']['de-de'] = "PIN Nummern";
$text['label-member-pin']['el-gr'] = "Αριθμοί PIN";
$text['label-member-pin']['es-cl'] = "Números PIN";
$text['label-member-pin']['es-mx'] = "Números PIN";
$text['label-member-pin']['fr-ca'] = "Code Membre";
@@ -1326,6 +1381,7 @@ $text['label-max-members']['ar-eg'] = "ماكس أعضاء";
$text['label-max-members']['de-at'] = "Maximale Anzahl an Teilnehmer";
$text['label-max-members']['de-ch'] = "Maximale Anzahl an Teilnehmer";
$text['label-max-members']['de-de'] = "Maximale Anzahl an Teilnehmer";
$text['label-max-members']['el-gr'] = "Μέγιστος αριθμός μελών";
$text['label-max-members']['es-cl'] = "Cantidad máxima de miembros";
$text['label-max-members']['es-mx'] = "Cantidad máxima de miembros";
$text['label-max-members']['fr-ca'] = "Membres Max";
@@ -1350,6 +1406,7 @@ $text['label-from']['ar-eg'] = "من";
$text['label-from']['de-at'] = "Von";
$text['label-from']['de-ch'] = "Von";
$text['label-from']['de-de'] = "Von";
$text['label-from']['el-gr'] = "Από";
$text['label-from']['es-cl'] = "Desde";
$text['label-from']['es-mx'] = "Desde";
$text['label-from']['fr-ca'] = "A Partir De";
@@ -1374,6 +1431,7 @@ $text['label-exit-sound']['ar-eg'] = "خروج الصوت";
$text['label-exit-sound']['de-at'] = "Ton beim Verlassen";
$text['label-exit-sound']['de-ch'] = "Ton beim Verlassen";
$text['label-exit-sound']['de-de'] = "Ton beim Verlassen";
$text['label-exit-sound']['el-gr'] = "Έξοδος ήχου";
$text['label-exit-sound']['es-cl'] = "Sonido de salida";
$text['label-exit-sound']['es-mx'] = "Sonido de salida";
$text['label-exit-sound']['fr-ca'] = "Sons de sortie";
@@ -1398,6 +1456,7 @@ $text['label-enter-sound']['ar-eg'] = "أدخل الصوت";
$text['label-enter-sound']['de-at'] = "Ton beim Eintreten";
$text['label-enter-sound']['de-ch'] = "Ton beim Eintreten";
$text['label-enter-sound']['de-de'] = "Ton beim Eintreten";
$text['label-enter-sound']['el-gr'] = "Εισαγάγετε Ήχος";
$text['label-enter-sound']['es-cl'] = "Sonido de entrada";
$text['label-enter-sound']['es-mx'] = "Sonido de entrada";
$text['label-enter-sound']['fr-ca'] = "Sons d'arrivée";
@@ -1422,6 +1481,7 @@ $text['label-end']['ar-eg'] = "نهاية";
$text['label-end']['de-at'] = "Ende";
$text['label-end']['de-ch'] = "Ende";
$text['label-end']['de-de'] = "Ende";
$text['label-end']['el-gr'] = "Τέλος";
$text['label-end']['es-cl'] = "Fin";
$text['label-end']['es-mx'] = "Fin";
$text['label-end']['fr-ca'] = "Fin";
@@ -1446,6 +1506,7 @@ $text['label-edit']['ar-eg'] = "يحرر";
$text['label-edit']['de-at'] = "Bearbeiten";
$text['label-edit']['de-ch'] = "Bearbeiten";
$text['label-edit']['de-de'] = "Bearbeiten";
$text['label-edit']['el-gr'] = "Επεξεργασία";
$text['label-edit']['es-cl'] = "Editar";
$text['label-edit']['es-mx'] = "Editar";
$text['label-edit']['fr-ca'] = "Modifier";
@@ -1470,6 +1531,7 @@ $text['label-download']['ar-eg'] = "تحميل";
$text['label-download']['de-at'] = "Herunterladen";
$text['label-download']['de-ch'] = "Herunterladen";
$text['label-download']['de-de'] = "Herunterladen";
$text['label-download']['el-gr'] = "Κατεβάστε";
$text['label-download']['es-cl'] = "Descargar";
$text['label-download']['es-mx'] = "Descargar";
$text['label-download']['fr-ca'] = "Télécharger";
@@ -1494,6 +1556,7 @@ $text['label-details']['ar-eg'] = "تفاصيل";
$text['label-details']['de-at'] = "Details";
$text['label-details']['de-ch'] = "Details";
$text['label-details']['de-de'] = "Details";
$text['label-details']['el-gr'] = "Λεπτομέριες";
$text['label-details']['es-cl'] = "Detalles";
$text['label-details']['es-mx'] = "Detalles";
$text['label-details']['fr-ca'] = "Détails";
@@ -1518,6 +1581,7 @@ $text['label-conference_name']['ar-eg'] = "اسم المؤتمر";
$text['label-conference_name']['de-at'] = "Konferenz Name";
$text['label-conference_name']['de-ch'] = "Konferenz Name";
$text['label-conference_name']['de-de'] = "Konferenz Name";
$text['label-conference_name']['el-gr'] = "Όνομα συνεδρίου";
$text['label-conference_name']['es-cl'] = "Nombre de la conferencia";
$text['label-conference_name']['es-mx'] = "Nombre de la conferencia";
$text['label-conference_name']['fr-ca'] = "Nom de la Conférence";
@@ -1538,10 +1602,11 @@ $text['label-conference_name']['ko-kr'] = "회의 이름";
$text['label-cdr']['en-us'] = "CDR";
$text['label-cdr']['en-gb'] = "CDR";
$text['label-cdr']['ar-eg'] = "مجلس الإنماء والإعمار";
$text['label-cdr']['ar-eg'] = "مجلس سجلات تفاصيل المكالمات";
$text['label-cdr']['de-at'] = "CDR";
$text['label-cdr']['de-ch'] = "CDR";
$text['label-cdr']['de-de'] = "CDR";
$text['label-cdr']['el-gr'] = "CDR";
$text['label-cdr']['es-cl'] = "CDR";
$text['label-cdr']['es-mx'] = "CDR";
$text['label-cdr']['fr-ca'] = "Historique d'appels";
@@ -1566,6 +1631,7 @@ $text['label-caller-id-number']['ar-eg'] = "رقم هوية المتصل";
$text['label-caller-id-number']['de-at'] = "Anruferkennung (Nummer)";
$text['label-caller-id-number']['de-ch'] = "Anruferkennung (Nummer)";
$text['label-caller-id-number']['de-de'] = "Anruferkennung (Nummer)";
$text['label-caller-id-number']['el-gr'] = "Αριθμός αναγνώρισης καλούντος";
$text['label-caller-id-number']['es-cl'] = "Número de Caller ID";
$text['label-caller-id-number']['es-mx'] = "Número de Caller ID";
$text['label-caller-id-number']['fr-ca'] = "Numéro d'appelant";
@@ -1590,6 +1656,7 @@ $text['label-caller-id-name']['ar-eg'] = "اسم معرف المتصل";
$text['label-caller-id-name']['de-at'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-ch'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['de-de'] = "Anruferkennung (Name)";
$text['label-caller-id-name']['el-gr'] = "Όνομα αναγνώρισης κλήσης";
$text['label-caller-id-name']['es-cl'] = "Nombre de Caller ID";
$text['label-caller-id-name']['es-mx'] = "Nombre de Caller ID";
$text['label-caller-id-name']['fr-ca'] = "Nom d'appelant";
@@ -1614,6 +1681,7 @@ $text['label-announce_name']['ar-eg'] = "أعلن الاسم";
$text['label-announce_name']['de-at'] = "Ankündigen";
$text['label-announce_name']['de-ch'] = "Ankündigen";
$text['label-announce_name']['de-de'] = "Ankündigen";
$text['label-announce_name']['el-gr'] = "Ανακοινώστε το Όνομα";
$text['label-announce_name']['es-cl'] = "Anunciar";
$text['label-announce_name']['es-mx'] = "Anunciar";
$text['label-announce_name']['fr-ca'] = "Annonce";
@@ -1626,7 +1694,7 @@ $text['label-announce_name']['pt-br'] = "Anunciar";
$text['label-announce_name']['pt-pt'] = "Anunciar";
$text['label-announce_name']['ro-ro'] = "Anunțați numele";
$text['label-announce_name']['ru-ru'] = "Анонс";
$text['label-announce_name']['sv-se'] = "Meddela";
$text['label-announce_name']['sv-se'] = "Meddela Namn";
$text['label-announce_name']['uk-ua'] = "Анонс";
$text['label-announce_name']['zh-cn'] = "姓名";
$text['label-announce_name']['ja-jp'] = "発表者名";
@@ -1638,6 +1706,7 @@ $text['label-announce_count']['ar-eg'] = "أعلن العد";
$text['label-announce_count']['de-at'] = "Ankündigen";
$text['label-announce_count']['de-ch'] = "Ankündigen";
$text['label-announce_count']['de-de'] = "Ankündigen";
$text['label-announce_count']['el-gr'] = "Ανακοίνωση καταμέτρησης";
$text['label-announce_count']['es-cl'] = "Anunciar";
$text['label-announce_count']['es-mx'] = "Anunciar";
$text['label-announce_count']['fr-ca'] = "Annonce";
@@ -1650,7 +1719,7 @@ $text['label-announce_count']['pt-br'] = "Anunciar";
$text['label-announce_count']['pt-pt'] = "Anunciar";
$text['label-announce_count']['ro-ro'] = "Anunțați numărul";
$text['label-announce_count']['ru-ru'] = "Анонс";
$text['label-announce_count']['sv-se'] = "Meddela";
$text['label-announce_count']['sv-se'] = "Meddela Antal";
$text['label-announce_count']['uk-ua'] = "Анонс";
$text['label-announce_count']['zh-cn'] = "Announce州";
$text['label-announce_count']['ja-jp'] = "カウントを発表";
@@ -1662,6 +1731,7 @@ $text['label-announce_recording']['ar-eg'] = "أعلن التسجيل";
$text['label-announce_recording']['de-at'] = "Ankündigen";
$text['label-announce_recording']['de-ch'] = "Ankündigen";
$text['label-announce_recording']['de-de'] = "Ankündigen";
$text['label-announce_recording']['el-gr'] = "Ανακοίνωση εγγραφής";
$text['label-announce_recording']['es-cl'] = "Anunciar";
$text['label-announce_recording']['es-mx'] = "Anunciar";
$text['label-announce_recording']['fr-ca'] = "Annonce";
@@ -1674,7 +1744,7 @@ $text['label-announce_recording']['pt-br'] = "Anunciar";
$text['label-announce_recording']['pt-pt'] = "Anunciar";
$text['label-announce_recording']['ro-ro'] = "Anunțați înregistrarea";
$text['label-announce_recording']['ru-ru'] = "Анонс";
$text['label-announce_recording']['sv-se'] = "Meddela";
$text['label-announce_recording']['sv-se'] = "Meddela Inspelning";
$text['label-announce_recording']['uk-ua'] = "Анонс";
$text['label-announce_recording']['zh-cn'] = "放弃记录";
$text['label-announce_recording']['ja-jp'] = "記録発表";
@@ -1686,6 +1756,7 @@ $text['description-users']['ar-eg'] = "قم بتعيين مستخدمين إضا
$text['description-users']['de-at'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu.";
$text['description-users']['de-ch'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu.";
$text['description-users']['de-de'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu.";
$text['description-users']['el-gr'] = "Ορίστε επιπλέον χρήστες ως διαχειριστές αυτής της αίθουσας συνεδριάσεων.";
$text['description-users']['es-cl'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
$text['description-users']['es-mx'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
$text['description-users']['fr-ca'] = "Ajouter des utilisateurs comme administrateurs des cette salle de conférence.";
@@ -1710,6 +1781,7 @@ $text['description-schedule']['ar-eg'] = "حدد تاريخ / وقت البدء
$text['description-schedule']['de-at'] = "Setzen Sie die Start und Stopp Datum/Zeit für diesen Raum";
$text['description-schedule']['de-ch'] = "Setzen Sie die Start und Stopp Datum/Zeit für diesen Raum";
$text['description-schedule']['de-de'] = "Setzen Sie die Start und Stopp Datum/Zeit für diesen Raum";
$text['description-schedule']['el-gr'] = "Ορίστε μια ημερομηνία/ώρα έναρξης και λήξης για αυτό το δωμάτιο.";
$text['description-schedule']['es-cl'] = "Establezca un inicio y parada de fecha/hora para esta sala.";
$text['description-schedule']['es-mx'] = "Establezca un inicio y parada de fecha/hora para esta sala.";
$text['description-schedule']['fr-ca'] = "Définir un démarrage et d'arrêt de date/heure pour cette chambre.";
@@ -1734,6 +1806,7 @@ $text['description-room-name']['ar-eg'] = "أدخل اسمًا لقاعة الم
$text['description-room-name']['de-at'] = "Geben Sie einen Namen für diesen Konferenzraum an.";
$text['description-room-name']['de-ch'] = "Geben Sie einen Namen für diesen Konferenzraum an.";
$text['description-room-name']['de-de'] = "Geben Sie einen Namen für diesen Konferenzraum an.";
$text['description-room-name']['el-gr'] = "Εισαγάγετε ένα όνομα για την αίθουσα συνεδριάσεων.";
$text['description-room-name']['es-cl'] = "Introduzca un nombre para la sala de conferencias.";
$text['description-room-name']['es-mx'] = "Introduzca un nombre para la sala de conferencias.";
$text['description-room-name']['fr-ca'] = "Entrez un nom pour la salle de conférence.";
@@ -1758,6 +1831,7 @@ $text['description-profile']['ar-eg'] = "ملف تعريف المؤتمر عبا
$text['description-profile']['de-at'] = "Das Konferenz-Profil ist eine Zusammenfassung von Einstellungen für die Konferenz Zentrale.";
$text['description-profile']['de-ch'] = "Das Konferenz-Profil ist eine Zusammenfassung von Einstellungen für die Konferenz Zentrale.";
$text['description-profile']['de-de'] = "Das Konferenz-Profil ist eine Zusammenfassung von Einstellungen für die Konferenz Zentrale.";
$text['description-profile']['el-gr'] = "Το Conference Profile είναι μια συλλογή ρυθμίσεων για το συνεδριακό κέντρο.";
$text['description-profile']['es-cl'] = "El Perfil de Conferencia es una colección de ajustes para el centro de conferencia.";
$text['description-profile']['es-mx'] = "El Perfil de Conferencia es una colección de ajustes para el centro de conferencia.";
$text['description-profile']['fr-ca'] = "Le profile de conférence est une liste de configuration pour les conférences. ";
@@ -1782,6 +1856,7 @@ $text['description-participant-pin']['ar-eg'] = "الرقم السري للمش
$text['description-participant-pin']['de-at'] = "PIN Nummer für Teilnehmer.";
$text['description-participant-pin']['de-ch'] = "PIN Nummer für Teilnehmer.";
$text['description-participant-pin']['de-de'] = "PIN Nummer für Teilnehmer.";
$text['description-participant-pin']['el-gr'] = "Pin αριθμός για τους συμμετέχοντες.";
$text['description-participant-pin']['es-cl'] = "Número PIN para participantes";
$text['description-participant-pin']['es-mx'] = "Número PIN para participantes";
$text['description-participant-pin']['fr-ca'] = "Code PIN des participants.";
@@ -1806,6 +1881,7 @@ $text['description-moderator_pin']['ar-eg'] = "الرقم السري للمشر
$text['description-moderator_pin']['de-at'] = "PIN Nummer für Moderatoren.";
$text['description-moderator_pin']['de-ch'] = "PIN Nummer für Moderatoren.";
$text['description-moderator_pin']['de-de'] = "PIN Nummer für Moderatoren.";
$text['description-moderator_pin']['el-gr'] = "Pin αριθμός για τους συντονιστές.";
$text['description-moderator_pin']['es-cl'] = "Número PIN para moderadores";
$text['description-moderator_pin']['es-mx'] = "Número PIN para moderadores";
$text['description-moderator_pin']['fr-ca'] = "Code PIN des modérateurs.";
@@ -1830,6 +1906,7 @@ $text['description-conference_sessions']['ar-eg'] = "جلسات المؤتمر
$text['description-conference_sessions']['de-at'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzen.";
$text['description-conference_sessions']['de-ch'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzen.";
$text['description-conference_sessions']['de-de'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzen.";
$text['description-conference_sessions']['el-gr'] = "Οι συνεδρίες συνεδριάσεων είναι στοιχεία καταγραφής σχετικά με τα συνέδρια.";
$text['description-conference_sessions']['es-cl'] = "Las Sesiones de Conferencia son un registro detallado de las conferencias.";
$text['description-conference_sessions']['es-mx'] = "Las Sesiones de Conferencia son un registro detallado de las conferencias.";
$text['description-conference_sessions']['fr-ca'] = "Sessions de conférences sont les détails des logs sur les conférences.";
@@ -1854,6 +1931,7 @@ $text['description-conference_session_details']['ar-eg'] = "جلسات المؤ
$text['description-conference_session_details']['de-at'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzenschaltungen.";
$text['description-conference_session_details']['de-ch'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzenschaltungen.";
$text['description-conference_session_details']['de-de'] = "Konferenz Sitzungen sind Protokolle der letzten Konferenzenschaltungen.";
$text['description-conference_session_details']['el-gr'] = "Οι συνεδριάσεις συνεδριάσεων είναι στοιχεία καταγραφής των κλήσεων διασκέψεων.";
$text['description-conference_session_details']['es-cl'] = "Las Sesiones de Conferencia son un registro detallado de las llamadas de conferencia";
$text['description-conference_session_details']['es-mx'] = "Las Sesiones de Conferencia son un registro detallado de las llamadas de conferencia";
$text['description-conference_session_details']['fr-ca'] = "Sessions de conférences sont les détails des logs sur les conférences.";
@@ -1878,6 +1956,7 @@ $text['description-conference_centers']['ar-eg'] = "مراكز المؤتمرا
$text['description-conference_centers']['de-at'] = "Konferenz-Zentralen sind Gruppen mehrere Konferenzräume. Diese können anhand diverse Kriterien wie Kostenstelle, geographisher Ort oder sonstiges organisiert werden.";
$text['description-conference_centers']['de-ch'] = "Konferenz-Zentralen sind Gruppen mehrere Konferenzräume. Diese können anhand diverse Kriterien wie Kostenstelle, geographisher Ort oder sonstiges organisiert werden.";
$text['description-conference_centers']['de-de'] = "Konferenz-Zentralen sind Gruppen mehrere Konferenzräume. Diese können anhand diverse Kriterien wie Kostenstelle, geographisher Ort oder sonstiges organisiert werden.";
$text['description-conference_centers']['el-gr'] = "Τα Συνεδριακά Κέντρα είναι μια ομάδα αιθουσών συνεδριάσεων. Μπορούν να οργανωθούν ανά κέντρο κόστους, γεωγραφικά ή άλλα κριτήρια.";
$text['description-conference_centers']['es-cl'] = "Los Centros de Conferencias son un grupo de salas de conferencias. Estas se organizan por centro de costo, geográficamente u otro criterio.";
$text['description-conference_centers']['es-mx'] = "Los Centros de Conferencias son un grupo de salas de conferencias. Estas se organizan por centro de costo, geográficamente u otro criterio.";
$text['description-conference_centers']['fr-ca'] = "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.";
@@ -1902,6 +1981,7 @@ $text['description-conference_center']['ar-eg'] = "يُستخدم مركز ال
$text['description-conference_center']['de-at'] = "Konferenz Zentralen ermöglichen die Erstellung von einem oder mehrere Konferenzräume mit Namen, Nebenstelle, benötigte PIN Mindestlänge und eine Beschreibung.";
$text['description-conference_center']['de-ch'] = "Konferenz Zentralen ermöglichen die Erstellung von einem oder mehrere Konferenzräume mit Namen, Nebenstelle, benötigte PIN Mindestlänge und eine Beschreibung.";
$text['description-conference_center']['de-de'] = "Konferenz Zentralen ermöglichen die Erstellung von einem oder mehrere Konferenzräume mit Namen, Nebenstelle, benötigte PIN Mindestlänge und eine Beschreibung.";
$text['description-conference_center']['el-gr'] = "Το Συνεδριακό Κέντρο χρησιμοποιείται για τη ρύθμιση μιας ή περισσότερων αιθουσών συνεδριάσεων με όνομα, αριθμό επέκτασης, απαιτούμενο μήκος αριθμού pin και περιγραφή.";
$text['description-conference_center']['es-cl'] = "El Centro de Conferencia se usa para configurar una o más salas con un nombre, número de extensión, un largo de número pin requerido y una descripción.";
$text['description-conference_center']['es-mx'] = "El Centro de Conferencia se usa para configurar una o más salas con un nombre, número de extensión, un largo de número pin requerido y una descripción.";
$text['description-conference_center']['fr-ca'] = "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.";
@@ -1926,6 +2006,7 @@ $text['button-sessions']['ar-eg'] = "الجلسات";
$text['button-sessions']['de-at'] = "Sitzungen";
$text['button-sessions']['de-ch'] = "Sitzungen";
$text['button-sessions']['de-de'] = "Sitzungen";
$text['button-sessions']['el-gr'] = "Συνεδρίες";
$text['button-sessions']['es-cl'] = "Sesiones";
$text['button-sessions']['es-mx'] = "Sesiones";
$text['button-sessions']['fr-ca'] = "Sessions";
@@ -1950,6 +2031,7 @@ $text['button-rooms']['ar-eg'] = "غرف";
$text['button-rooms']['de-at'] = "Räume";
$text['button-rooms']['de-ch'] = "Räume";
$text['button-rooms']['de-de'] = "Räume";
$text['button-rooms']['el-gr'] = "Δωμάτια";
$text['button-rooms']['es-cl'] = "Salas";
$text['button-rooms']['es-mx'] = "Salas";
$text['button-rooms']['fr-ca'] = "Salles";
@@ -1974,6 +2056,7 @@ $text['button-view_active']['ar-eg'] = "مشاهدة ملف Active";
$text['button-view_active']['de-at'] = "Aktive anzeigen";
$text['button-view_active']['de-ch'] = "Aktive anzeigen";
$text['button-view_active']['de-de'] = "Aktive anzeigen";
$text['button-view_active']['el-gr'] = "Προβολή Ενεργό";
$text['button-view_active']['es-cl'] = "Ver Activo";
$text['button-view_active']['es-mx'] = "Ver Activo";
$text['button-view_active']['fr-ca'] = "Voir Active";
+136 -122
View File
@@ -234,32 +234,11 @@
if (empty($conference_center_enabled)) { $conference_center_enabled = "true"; }
if (empty($conference_center_pin_length)) { $conference_center_pin_length = 9; }
//get the recordings
$sql = "select recording_name, recording_filename from v_recordings ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "order by recording_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$recordings = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//get the phrases
$sql = "select * from v_phrases ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$phrases = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//get the streams
$sql = "select * from v_streams ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$sql .= "and stream_enabled = 'true' ";
$sql .= "order by stream_name asc ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$streams = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters);
//get the sounds
$sounds = new sounds;
$sounds->sound_types = ['recordings','phrases','sounds'];
$sounds->full_path = ['recordings'];
$audio_files = $sounds->get();
//create token
$object = new token;
@@ -270,6 +249,76 @@
require_once "resources/header.php";
//show the content
if (permission_exists('recording_play') || permission_exists('recording_download')) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " function set_playable(id, audio_selected, audio_type) {\n";
echo " file_ext = audio_selected.split('.').pop();\n";
echo " var mime_type = '';\n";
echo " switch (file_ext) {\n";
echo " case 'wav': mime_type = 'audio/wav'; break;\n";
echo " case 'mp3': mime_type = 'audio/mpeg'; break;\n";
echo " case 'ogg': mime_type = 'audio/ogg'; break;\n";
echo " }\n";
echo " if (mime_type != '' && (audio_type == 'recordings' || audio_type == 'sounds')) {\n";
echo " if (audio_type == 'recordings') {\n";
echo " if (audio_selected.includes('/')) {\n";
echo " audio_selected = audio_selected.split('/').pop()\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('src', '../recordings/recordings.php?action=download&type=rec&filename=' + audio_selected);\n";
echo " }\n";
echo " else if (audio_type == 'sounds') {\n";
echo " $('#recording_audio_' + id).attr('src', '../switch/sounds.php?action=download&filename=' + audio_selected);\n";
echo " }\n";
echo " $('#recording_audio_' + id).attr('type', mime_type);\n";
echo " $('#recording_button_' + id).show();\n";
echo " }\n";
echo " else {\n";
echo " $('#recording_button_' + id).hide();\n";
echo " $('#recording_audio_' + id).attr('src','').attr('type','');\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
}
if (if_group("superadmin")) {
echo "<script type='text/javascript' language='JavaScript'>\n";
echo " var objs;\n";
echo " function toggle_select_input(obj, instance_id){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.className='formfld';\n";
echo " tb.setAttribute('id', instance_id);\n";
echo " tb.setAttribute('style', 'width: ' + obj.offsetWidth + 'px;');\n";
if (!empty($on_change)) {
echo " tb.setAttribute('onchange', \"".$on_change."\");\n";
echo " tb.setAttribute('onkeyup', \"".$on_change."\");\n";
}
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'none';\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ replace_element(this.objs, instance_id); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo " replace_element(this.objs, instance_id);\n";
echo " }\n";
echo " function replace_element(obj, instance_id){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo " document.getElementById('btn_select_to_input_' + instance_id).style.display = 'inline';\n";
if (!empty($on_change)) {
echo " ".$on_change.";\n";
}
echo " }\n";
echo "</script>\n";
}
echo "<form name='frm' id='frm' method='post'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
@@ -312,111 +361,76 @@
echo "</td>\n";
echo "</tr>\n";
$instance_id = 'conference_center_greeting';
$instance_label = 'conference_center_greeting';
$instance_value = $conference_center_greeting;
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-conference_center_greeting']."\n";
echo "<td class='vncell' rowspan='2' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-'.$instance_label]."\n";
echo "</td>\n";
echo "<td class='vtable playback_progress_bar_background' id='recording_progress_bar_".$instance_id."' style='display: none; border-bottom: none; padding-top: 0 !important; padding-bottom: 0 !important;' align='left'><span class='playback_progress_bar' id='recording_progress_".$instance_id."'></span></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vtable' align='left'>\n";
//echo " <input class='formfld' type='text' name='conference_center_greeting' maxlength='255' value=\"".escape($conference_center_greeting)."\">\n";
if (permission_exists('conference_center_add') || permission_exists('conference_center_edit')) {
echo "<script>\n";
echo "var Objs;\n";
echo "\n";
echo "function changeToInput(obj){\n";
echo " tb=document.createElement('INPUT');\n";
echo " tb.type='text';\n";
echo " tb.name=obj.name;\n";
echo " tb.setAttribute('class', 'formfld');\n";
echo " tb.setAttribute('style', 'width: 350px;');\n";
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
echo " tbb=document.createElement('INPUT');\n";
echo " tbb.setAttribute('class', 'btn');\n";
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
echo " tbb.type='button';\n";
echo " tbb.value=$('<div />').html('&#9665;').text();\n";
echo " tbb.objs=[obj,tb,tbb];\n";
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
echo " obj.parentNode.insertBefore(tb,obj);\n";
echo " obj.parentNode.insertBefore(tbb,obj);\n";
echo " obj.parentNode.removeChild(obj);\n";
echo "}\n";
echo "\n";
echo "function Replace(obj){\n";
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
echo " obj[0].parentNode.removeChild(obj[1]);\n";
echo " obj[0].parentNode.removeChild(obj[2]);\n";
echo "}\n";
echo "</script>\n";
echo "\n";
}
echo " <select name='conference_center_greeting' class='formfld' ".((permission_exists('conference_center_add') || permission_exists('conference_center_edit')) ? "onchange='changeToInput(this);'" : null).">\n";
echo " <option></option>\n";
//recordings
$tmp_selected = false;
if (is_array($recordings)) {
echo "<optgroup label='".$text['label-recordings']."'>\n";
foreach ($recordings as &$row) {
$recording_name = $row["recording_name"];
$recording_filename = $row["recording_filename"];
$recording_path = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'];
$selected = '';
if (!empty($conference_center_greeting) && $conference_center_greeting == $recording_path."/".$recording_filename) {
$selected = "selected='selected'";
}
echo " <option value='".escape($recording_path)."/".escape($recording_filename)."' ".escape($selected).">".escape($recording_name)."</option>\n";
unset($selected);
}
echo "</optgroup>\n";
}
//phrases
if (count($phrases) > 0) {
echo "<optgroup label='".$text['label-phrases']."'>\n";
foreach ($phrases as &$row) {
$selected = !empty($conference_center_greeting) && $conference_center_greeting == "phrase:".$row["phrase_uuid"] ? true : false;
echo " <option value='phrase:".escape($row["phrase_uuid"])."' ".(($selected) ? "selected='selected'" : null).">".escape($row["phrase_name"])."</option>\n";
if ($selected) { $tmp_selected = true; }
}
echo "</optgroup>\n";
}
//sounds
$file = new file;
$sound_files = $file->sounds();
if (is_array($sound_files)) {
echo "<optgroup label='".$text['label-sounds']."'>\n";
foreach ($sound_files as $key => $value) {
if (!empty($value)) {
if (!empty($conference_center_greeting) && substr($conference_center_greeting, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
$conference_center_greeting = substr($conference_center_greeting, 71);
}
$selected = !empty($conference_center_greeting) && $conference_center_greeting == $value ? true : false;
echo " <option value='".escape($value)."' ".(($selected) ? "selected='selected'" : null).">".escape($value)."</option>\n";
if ($selected) { $tmp_selected = true; }
}
}
echo "</optgroup>\n";
}
//select
if (!empty($conference_center_greeting)) {
if (permission_exists('conference_center_add') || permission_exists('conference_center_edit')) {
if (!$tmp_selected) {
echo "<optgroup label='selected'>\n";
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$conference_center_greeting)) {
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".escape($conference_center_greeting)."' selected='selected'>".escape($ivr_menu_greet_long)."</option>\n";
}
else if (substr($conference_center_greeting, -3) == "wav" || substr($conference_center_greeting, -3) == "mp3") {
echo " <option value='".escape($conference_center_greeting)."' selected='selected'>".escape($conference_center_greeting)."</option>\n";
echo "<select name='".$instance_id."' id='".$instance_id."' class='formfld' ".(permission_exists('recording_play') || permission_exists('recording_download') ? "onchange=\"recording_reset('".$instance_id."'); set_playable('".$instance_id."', this.value, this.options[this.selectedIndex].parentNode.getAttribute('data-type'));\"" : null).">\n";
echo " <option value=''></option>\n";
$found = $playable = false;
if (!empty($audio_files) && is_array($audio_files) && @sizeof($audio_files) != 0) {
foreach ($audio_files as $key => $value) {
echo "<optgroup label=".$text['label-'.$key]." data-type='".$key."'>\n";
foreach ($value as $row) {
if ($key == 'recordings') {
if (
!empty($instance_value) &&
($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) &&
file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME))
) {
$selected = "selected='selected'";
$playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME);
$found = true;
}
else {
echo " <option value='".escape($conference_center_greeting)."' selected='selected'>".escape($conference_center_greeting)."</option>\n";
unset($selected);
}
echo "</optgroup>\n";
}
unset($tmp_selected);
else if ($key == 'sounds') {
if (!empty($instance_value) && $instance_value == $row["value"]) {
$selected = "selected='selected'";
$playable = '../switch/sounds.php?action=download&filename='.$row["value"];
$found = true;
}
else {
unset($selected);
}
}
else {
unset($selected);
}
echo " <option value='".escape($row["value"])."' ".($selected ?? '').">".escape($row["name"])."</option>\n";
}
echo "</optgroup>\n";
}
}
if (if_group("superadmin") && !empty($instance_value) && !$found) {
echo " <option value='".escape($instance_value)."' selected='selected'>".escape($instance_value)."</option>\n";
}
unset($selected);
echo " </select>\n";
echo " <br />\n";
echo " ".$text['description-conference_center_greeting']."\n";
if (if_group("superadmin")) {
echo "<input type='button' id='btn_select_to_input_".$instance_id."' class='btn' name='' alt='back' onclick='toggle_select_input(document.getElementById(\"".$instance_id."\"), \"".$instance_id."\"); this.style.visibility=\"hidden\";' value='&#9665;'>";
}
if ((permission_exists('recording_play') || permission_exists('recording_download')) && (!empty($playable) || empty($instance_value))) {
switch (pathinfo($playable, PATHINFO_EXTENSION)) {
case 'wav' : $mime_type = 'audio/wav'; break;
case 'mp3' : $mime_type = 'audio/mpeg'; break;
case 'ogg' : $mime_type = 'audio/ogg'; break;
}
echo "<audio id='recording_audio_".$instance_id."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".$instance_id."')\" onended=\"recording_reset('".$instance_id."');\" src='".($playable ?? '')."' type='".($mime_type ?? '')."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."')"]);
unset($playable, $mime_type);
}
echo "<br />\n";
echo $text['description-'.$instance_label]."\n";
echo "</td>\n";
echo "</tr>\n";
@@ -477,4 +491,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
@@ -87,6 +87,7 @@
//get variables used to control the order
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'conference_center_extension' ? 'natural' : null;
//add the search term
$search = strtolower($_GET["search"] ?? '');
@@ -125,7 +126,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql);
$sql .= order_by($order_by, $order);
$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');
@@ -235,7 +236,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($row['conference_center_greeting'])."&nbsp;</td>\n";
echo " <td>".escape(str_replace($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/','',$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";
@@ -141,9 +141,9 @@
$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
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$esl = event_socket::create();
if ($esl->is_connected()) {
$switch_result = event_socket::api($switch_cmd);
}
}
+7 -7
View File
@@ -98,9 +98,9 @@
$default_voice = 'callie';
$switch_cmd = "conference ".$meeting_uuid."@".$_SESSION['domain_name']." play ".$_SESSION['switch']['sounds']['dir']."/".$default_language."/".$default_dialect."/".$default_voice."/ivr/ivr-recording_started.wav";
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$esl = event_socket::create();
if ($esl) {
$switch_result = event_socket::api($switch_cmd);
}
}
@@ -137,12 +137,12 @@
//get conference array
$switch_cmd = "conference xml_list";
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//connection to even socket failed
$esl = event_socket::create();
if (!$esl->is_connected()) {
trigger_error('Unable to connect to FreeSWITCH', E_USER_WARNING);
}
else {
$xml_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$xml_str = trim(event_socket::api($switch_cmd));
try {
$xml = new SimpleXMLElement($xml_str, true);
}
@@ -37,8 +37,8 @@
//feature_event method
public function send_call_center_notify() {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
//send the event
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: agent\n";
@@ -50,9 +50,8 @@
$event .= "login: agent+".$this->agent_name."@".$this->domain_name."\n";
$event .= "unique-id: ".$this->agent_uuid."\n";
$event .= "answer-state: ".$this->answer_state."\n";
event_socket_request($fp, $event);
event_socket::command($event);
//echo $event."<br />";
fclose($fp);
}
} //function
@@ -687,10 +687,10 @@ if (!class_exists('conference_centers')) {
$switch_cmd_notice = "conference ".$meeting_uuid[$uuid]."@".$_SESSION['domain_name']." play ".$_SESSION['switch']['sounds']['dir']."/".$default_language."/".$default_dialect."/".$default_voice."/ivr/ivr-recording_started.wav";
//execute api commands
// if (!file_exists($recording_dir.'/'.$meeting_uuid[$uuid].'.wav')) {
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
// $switch_result = event_socket_request($fp, 'api '.$switch_cmd_record);
$switch_result = event_socket_request($fp, 'api '.$switch_cmd_notice);
$esl = event_socket::create();
if ($esl->is_connected()) {
// $switch_result = event_socket::api($switch_cmd_record);
$switch_result = event_socket::api($switch_cmd_notice);
}
// }
}
+1 -1
View File
@@ -33,7 +33,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
$xml_dir = $setting->get('switch','conf').'/autoload_configs';
$xml_file = $xml_dir."/conference.conf";
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/switch/resources/conf/autoload_configs/conference.conf';
+19
View File
@@ -6,6 +6,7 @@ $text['title-conference_controls']['ar-eg'] = "ضوابط المؤتمر";
$text['title-conference_controls']['de-at'] = "Konferenzsteuerung";
$text['title-conference_controls']['de-ch'] = "Konferenzsteuerung";
$text['title-conference_controls']['de-de'] = "Konferenzsteuerung";
$text['title-conference_controls']['el-gr'] = "Έλεγχοι συνεδρίων";
$text['title-conference_controls']['es-cl'] = "Controles de conferencia";
$text['title-conference_controls']['es-mx'] = "Controles de conferencia";
$text['title-conference_controls']['fr-ca'] = "Contrôles de conférence";
@@ -30,6 +31,7 @@ $text['title-conference_control']['ar-eg'] = "التحكم بالمؤتمر";
$text['title-conference_control']['de-at'] = "Konferenzsteuerung";
$text['title-conference_control']['de-ch'] = "Konferenzsteuerung";
$text['title-conference_control']['de-de'] = "Konferenzsteuerung";
$text['title-conference_control']['el-gr'] = "Έλεγχος Συνεδρίου";
$text['title-conference_control']['es-cl'] = "Control de conferencias";
$text['title-conference_control']['es-mx'] = "Control de conferencias";
$text['title-conference_control']['fr-ca'] = "Contrôle de conférence";
@@ -54,6 +56,7 @@ $text['description-conference_controls']['ar-eg'] = "تتيح عناصر الت
$text['description-conference_controls']['de-at'] = "Funktionen zur Anrufsteuerung können Ziffern zugeordnet werden. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['description-conference_controls']['de-ch'] = "Funktionen zur Anrufsteuerung können Ziffern zugeordnet werden. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['description-conference_controls']['de-de'] = "Funktionen zur Anrufsteuerung können Ziffern zugeordnet werden. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['description-conference_controls']['el-gr'] = "Τα στοιχεία ελέγχου κλήσεων επιτρέπουν τη δυνατότητα αντιστοίχισης ψηφίων σε ενέργειες. Μπορούν να χρησιμοποιηθούν για σίγαση, κατάργηση σίγασης ή άλλες ενέργειες κατά τη διάρκεια της κλήσης συνδιάσκεψης.";
$text['description-conference_controls']['es-cl'] = "Los controles de llamada permiten la capacidad de asignar dígitos a las acciones. Se pueden usar para silenciar, cancelar el silencio u otras acciones durante la llamada de conferencia.";
$text['description-conference_controls']['es-mx'] = "Los controles de llamada permiten la capacidad de asignar dígitos a las acciones. Se pueden usar para silenciar, cancelar el silencio u otras acciones durante la llamada de conferencia.";
$text['description-conference_controls']['fr-ca'] = "Les commandes d'appel permettent d'associer des chiffres aux actions. Ils peuvent être utilisés pour mettre en sourdine, réactiver le son ou d’autres actions pendant la téléconférence.";
@@ -78,6 +81,7 @@ $text['label-control_name']['ar-eg'] = "اسم";
$text['label-control_name']['de-at'] = "Name";
$text['label-control_name']['de-ch'] = "Name";
$text['label-control_name']['de-de'] = "Name";
$text['label-control_name']['el-gr'] = "Ονομα";
$text['label-control_name']['es-cl'] = "Nombre";
$text['label-control_name']['es-mx'] = "Nombre";
$text['label-control_name']['fr-ca'] = "Nom";
@@ -102,6 +106,7 @@ $text['description-control_name']['ar-eg'] = "أدخل اسم التحكم با
$text['description-control_name']['de-at'] = "Geben Sie den Namen des Steuerelements ein.";
$text['description-control_name']['de-ch'] = "Geben Sie den Namen des Steuerelements ein.";
$text['description-control_name']['de-de'] = "Geben Sie den Namen des Steuerelements ein.";
$text['description-control_name']['el-gr'] = "Εισαγάγετε το όνομα ελέγχου συνδιάσκεψης.";
$text['description-control_name']['es-cl'] = "Ingrese el nombre del control de la conferencia.";
$text['description-control_name']['es-mx'] = "Ingrese el nombre del control de la conferencia.";
$text['description-control_name']['fr-ca'] = "Entrez le nom du contrôle de la conférence";
@@ -126,6 +131,7 @@ $text['label-control_enabled']['ar-eg'] = "ممكن";
$text['label-control_enabled']['de-at'] = "Aktiviert";
$text['label-control_enabled']['de-ch'] = "Aktiviert";
$text['label-control_enabled']['de-de'] = "Aktiviert";
$text['label-control_enabled']['el-gr'] = "Ενεργοποιημένο";
$text['label-control_enabled']['es-cl'] = "Activado";
$text['label-control_enabled']['es-mx'] = "Activado";
$text['label-control_enabled']['fr-ca'] = "Activé";
@@ -150,6 +156,7 @@ $text['description-control_enabled']['ar-eg'] = "اضبط حالة عنصر ال
$text['description-control_enabled']['de-at'] = "Setzen Sie den Status des Steuerelements";
$text['description-control_enabled']['de-ch'] = "Setzen Sie den Status des Steuerelements";
$text['description-control_enabled']['de-de'] = "Setzen Sie den Status des Steuerelements";
$text['description-control_enabled']['el-gr'] = "Ρυθμίστε την κατάσταση του χειριστηρίου.";
$text['description-control_enabled']['es-cl'] = "Establece el estado del control.";
$text['description-control_enabled']['es-mx'] = "Establece el estado del control.";
$text['description-control_enabled']['fr-ca'] = "Définir le statut du contrôle";
@@ -174,6 +181,7 @@ $text['label-control_description']['ar-eg'] = "وصف";
$text['label-control_description']['de-at'] = "Beschreibung";
$text['label-control_description']['de-ch'] = "Beschreibung";
$text['label-control_description']['de-de'] = "Beschreibung";
$text['label-control_description']['el-gr'] = "Περιγραφή";
$text['label-control_description']['es-cl'] = "Descripción";
$text['label-control_description']['es-mx'] = "Descripción";
$text['label-control_description']['fr-ca'] = "Description";
@@ -198,6 +206,7 @@ $text['description-control_description']['ar-eg'] = "أدخل الوصف.";
$text['description-control_description']['de-at'] = "Geben Sie eine Beschreibung ein.";
$text['description-control_description']['de-ch'] = "Geben Sie eine Beschreibung ein.";
$text['description-control_description']['de-de'] = "Geben Sie eine Beschreibung ein.";
$text['description-control_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-control_description']['es-cl'] = "Introduce la descripción.";
$text['description-control_description']['es-mx'] = "Introduce la descripción.";
$text['description-control_description']['fr-ca'] = "Entrez la description.";
@@ -222,6 +231,7 @@ $text['message-required']['ar-eg'] = "يرجى تقديم:";
$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
$text['message-required']['de-ch'] = "Bitte geben Sie folgendes an:";
$text['message-required']['de-de'] = "Bitte geben Sie folgendes an:";
$text['message-required']['el-gr'] = "Παρέχετε:";
$text['message-required']['es-cl'] = "Por favor proporcione:";
$text['message-required']['es-mx'] = "Por favor proporcione:";
$text['message-required']['fr-ca'] = "Veuillez fournir";
@@ -246,6 +256,7 @@ $text['title-conference_control_details']['ar-eg'] = "בקרות";
$text['title-conference_control_details']['de-at'] = "Steuerelemente";
$text['title-conference_control_details']['de-ch'] = "Steuerelemente";
$text['title-conference_control_details']['de-de'] = "Steuerelemente";
$text['title-conference_control_details']['el-gr'] = "Έλεγχοι";
$text['title-conference_control_details']['es-cl'] = "Control S";
$text['title-conference_control_details']['es-mx'] = "Control S";
$text['title-conference_control_details']['fr-ca'] = "Contrôles";
@@ -270,6 +281,7 @@ $text['title-conference_control_detail']['ar-eg'] = "يتحكم";
$text['title-conference_control_detail']['de-at'] = "Steuern";
$text['title-conference_control_detail']['de-ch'] = "Steuern";
$text['title-conference_control_detail']['de-de'] = "Steuern";
$text['title-conference_control_detail']['el-gr'] = "Ελεγχος";
$text['title-conference_control_detail']['es-cl'] = "Control";
$text['title-conference_control_detail']['es-mx'] = "Control";
$text['title-conference_control_detail']['fr-ca'] = "Les contrôles";
@@ -294,6 +306,7 @@ $text['title_description-conference_control_detail']['ar-eg'] = "تتيح عنا
$text['title_description-conference_control_detail']['de-at'] = "Anrufsteuerung anhand von zugeordneten Ziffern. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['title_description-conference_control_detail']['de-ch'] = "Anrufsteuerung anhand von zugeordneten Ziffern. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['title_description-conference_control_detail']['de-de'] = "Anrufsteuerung anhand von zugeordneten Ziffern. Diese können verschiedene Aktionen wie Stummschaltung, usw. während einer Konferenz auslösen.";
$text['title_description-conference_control_detail']['el-gr'] = "Τα στοιχεία ελέγχου κλήσεων επιτρέπουν τη δυνατότητα αντιστοίχισης ψηφίων σε ενέργειες. Μπορούν να χρησιμοποιηθούν για σίγαση, κατάργηση σίγασης ή άλλες ενέργειες κατά τη διάρκεια της κλήσης συνδιάσκεψης.";
$text['title_description-conference_control_detail']['es-cl'] = "Los controles de llamada permiten la capacidad de asignar dígitos a las acciones. Se pueden usar para silenciar, cancelar el silencio u otras acciones durante la llamada de conferencia.";
$text['title_description-conference_control_detail']['es-mx'] = "Los controles de llamada permiten la capacidad de asignar dígitos a las acciones. Se pueden usar para silenciar, cancelar el silencio u otras acciones durante la llamada de conferencia.";
$text['title_description-conference_control_detail']['fr-ca'] = "Les commandes d'appel permettent d'associer des chiffres aux actions. Ils peuvent être utilisés pour mettre en sourdine, réactiver le son ou d’autres actions pendant la téléconférence.";
@@ -318,6 +331,7 @@ $text['label-control_digits']['ar-eg'] = "أرقام";
$text['label-control_digits']['de-at'] = "Ziffern";
$text['label-control_digits']['de-ch'] = "Ziffern";
$text['label-control_digits']['de-de'] = "Ziffern";
$text['label-control_digits']['el-gr'] = "Ψηφία";
$text['label-control_digits']['es-cl'] = "dígitos";
$text['label-control_digits']['es-mx'] = "dígitos";
$text['label-control_digits']['fr-ca'] = "Chiffres";
@@ -342,6 +356,7 @@ $text['description-control_digits']['ar-eg'] = "أدخل الأرقام.";
$text['description-control_digits']['de-at'] = "Geben Sie die Ziffern ein.";
$text['description-control_digits']['de-ch'] = "Geben Sie die Ziffern ein.";
$text['description-control_digits']['de-de'] = "Geben Sie die Ziffern ein.";
$text['description-control_digits']['el-gr'] = "Εισαγάγετε τα ψηφία.";
$text['description-control_digits']['es-cl'] = "Introduzca los dígitos.";
$text['description-control_digits']['es-mx'] = "Introduzca los dígitos.";
$text['description-control_digits']['fr-ca'] = "Entrez les chiffres";
@@ -366,6 +381,7 @@ $text['label-control_action']['ar-eg'] = "فعل";
$text['label-control_action']['de-at'] = "Aktion";
$text['label-control_action']['de-ch'] = "Aktion";
$text['label-control_action']['de-de'] = "Aktion";
$text['label-control_action']['el-gr'] = "Δράση";
$text['label-control_action']['es-cl'] = "Acción";
$text['label-control_action']['es-mx'] = "Acción";
$text['label-control_action']['fr-ca'] = "Action";
@@ -390,6 +406,7 @@ $text['description-control_action']['ar-eg'] = "أدخل العمل.";
$text['description-control_action']['de-at'] = "Geben Sie die Aktion an.";
$text['description-control_action']['de-ch'] = "Geben Sie die Aktion an.";
$text['description-control_action']['de-de'] = "Geben Sie die Aktion an.";
$text['description-control_action']['el-gr'] = "Εισαγάγετε τη δράση.";
$text['description-control_action']['es-cl'] = "Introduzca la acción.";
$text['description-control_action']['es-mx'] = "Introduzca la acción.";
$text['description-control_action']['fr-ca'] = "Entrer L'action";
@@ -414,6 +431,7 @@ $text['label-control_data']['ar-eg'] = "بيانات";
$text['label-control_data']['de-at'] = "Daten";
$text['label-control_data']['de-ch'] = "Daten";
$text['label-control_data']['de-de'] = "Daten";
$text['label-control_data']['el-gr'] = "Δεδομένα";
$text['label-control_data']['es-cl'] = "Datos";
$text['label-control_data']['es-mx'] = "Datos";
$text['label-control_data']['fr-ca'] = "Les données";
@@ -438,6 +456,7 @@ $text['description-control_data']['ar-eg'] = "أدخل البيانات.";
$text['description-control_data']['de-at'] = "Geben Sie die Daten ein.";
$text['description-control_data']['de-ch'] = "Geben Sie die Daten ein.";
$text['description-control_data']['de-de'] = "Geben Sie die Daten ein.";
$text['description-control_data']['el-gr'] = "Εισαγάγετε τα δεδομένα.";
$text['description-control_data']['es-cl'] = "Introduce los datos.";
$text['description-control_data']['es-mx'] = "Introduce los datos.";
$text['description-control_data']['fr-ca'] = "Entrer les données";
+1 -1
View File
@@ -33,7 +33,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs';
$xml_dir = $setting->get('switch','conf').'/autoload_configs';
$xml_file = $xml_dir."/conference.conf";
$xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/switch/resources/conf/autoload_configs/conference.conf';
+20
View File
@@ -6,6 +6,7 @@ $text['title-conference_profiles']['ar-eg'] = "ملفات تعريف المؤت
$text['title-conference_profiles']['de-at'] = "Konferenzprofile";
$text['title-conference_profiles']['de-ch'] = "Konferenzprofile";
$text['title-conference_profiles']['de-de'] = "Konferenzprofile";
$text['title-conference_profiles']['el-gr'] = "Προφίλ Συνεδρίου";
$text['title-conference_profiles']['es-cl'] = "Perfiles de conferencias";
$text['title-conference_profiles']['es-mx'] = "Perfiles de conferencias";
$text['title-conference_profiles']['fr-ca'] = "Profils de conférence";
@@ -30,6 +31,7 @@ $text['title-conference_profile']['ar-eg'] = "الملف الشخصي للمؤت
$text['title-conference_profile']['de-at'] = "Konferenzprofile";
$text['title-conference_profile']['de-ch'] = "Konferenzprofile";
$text['title-conference_profile']['de-de'] = "Konferenzprofile";
$text['title-conference_profile']['el-gr'] = "Προφίλ Συνεδρίου";
$text['title-conference_profile']['es-cl'] = "Perfil de la conferencia";
$text['title-conference_profile']['es-mx'] = "Perfil de la conferencia";
$text['title-conference_profile']['fr-ca'] = "Profil de la conférence";
@@ -54,6 +56,7 @@ $text['description-conference_profiles']['ar-eg'] = "مجموعة من معلم
$text['description-conference_profiles']['de-at'] = "Eine Gruppe von Konferenz-Parametern zu einem Profil zusammengefasst";
$text['description-conference_profiles']['de-ch'] = "Eine Gruppe von Konferenz-Parametern zu einem Profil zusammengefasst";
$text['description-conference_profiles']['de-de'] = "Eine Gruppe von Konferenz-Parametern zu einem Profil zusammengefasst";
$text['description-conference_profiles']['el-gr'] = "Μια ομάδα παραμέτρων διάσκεψης που αποθηκεύονται μαζί ως προφίλ.";
$text['description-conference_profiles']['es-cl'] = "Un grupo de parámetros de conferencia guardados juntos como un perfil.";
$text['description-conference_profiles']['es-mx'] = "Un grupo de parámetros de conferencia guardados juntos como un perfil.";
$text['description-conference_profiles']['fr-ca'] = "Un groupe de paramètres de conférence enregistrés ensemble en tant que profil.";
@@ -78,6 +81,7 @@ $text['label-profile_name']['ar-eg'] = "اسم";
$text['label-profile_name']['de-at'] = "Name";
$text['label-profile_name']['de-ch'] = "Name";
$text['label-profile_name']['de-de'] = "Name";
$text['label-profile_name']['el-gr'] = "Ονομα";
$text['label-profile_name']['es-cl'] = "Nombre";
$text['label-profile_name']['es-mx'] = "Nombre";
$text['label-profile_name']['fr-ca'] = "Nom";
@@ -102,6 +106,7 @@ $text['description-profile_name']['ar-eg'] = "أدخل اسم ملف التعر
$text['description-profile_name']['de-at'] = "Geben Sie den Profil Namen ein.";
$text['description-profile_name']['de-ch'] = "Geben Sie den Profil Namen ein.";
$text['description-profile_name']['de-de'] = "Geben Sie den Profil Namen ein.";
$text['description-profile_name']['el-gr'] = "Εισαγάγετε το όνομα του προφίλ.";
$text['description-profile_name']['es-cl'] = "Introduzca el nombre del perfil.";
$text['description-profile_name']['es-mx'] = "Introduzca el nombre del perfil.";
$text['description-profile_name']['fr-ca'] = "Entrez le nom du profil.";
@@ -126,6 +131,7 @@ $text['label-profile_enabled']['ar-eg'] = "ممكن";
$text['label-profile_enabled']['de-at'] = "Aktiviert";
$text['label-profile_enabled']['de-ch'] = "Aktiviert";
$text['label-profile_enabled']['de-de'] = "Aktiviert";
$text['label-profile_enabled']['el-gr'] = "Ενεργοποιημένο";
$text['label-profile_enabled']['es-cl'] = "Activado";
$text['label-profile_enabled']['es-mx'] = "Activado";
$text['label-profile_enabled']['fr-ca'] = "Activé";
@@ -150,6 +156,7 @@ $text['description-profile_enabled']['ar-eg'] = "اضبط حالة الملف ا
$text['description-profile_enabled']['de-at'] = "Setzen Sie den Status des Profils";
$text['description-profile_enabled']['de-ch'] = "Setzen Sie den Status des Profils";
$text['description-profile_enabled']['de-de'] = "Setzen Sie den Status des Profils";
$text['description-profile_enabled']['el-gr'] = "Ορίστε την κατάσταση του προφίλ.";
$text['description-profile_enabled']['es-cl'] = "Establecer el estado del perfil.";
$text['description-profile_enabled']['es-mx'] = "Establecer el estado del perfil.";
$text['description-profile_enabled']['fr-ca'] = "Définir le statut du profil.";
@@ -174,6 +181,7 @@ $text['label-profile_description']['ar-eg'] = "وصف";
$text['label-profile_description']['de-at'] = "Beschreibung";
$text['label-profile_description']['de-ch'] = "Beschreibung";
$text['label-profile_description']['de-de'] = "Beschreibung";
$text['label-profile_description']['el-gr'] = "Περιγραφή";
$text['label-profile_description']['es-cl'] = "Descripción";
$text['label-profile_description']['es-mx'] = "Descripción";
$text['label-profile_description']['fr-ca'] = "Description";
@@ -198,6 +206,7 @@ $text['description-profile_description']['ar-eg'] = "أدخل الوصف.";
$text['description-profile_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-profile_description']['es-cl'] = "Introduce la descripción.";
$text['description-profile_description']['es-mx'] = "Introduce la descripción.";
$text['description-profile_description']['fr-ca'] = "Entrez la description";
@@ -222,6 +231,7 @@ $text['title-conference_profile_params']['ar-eg'] = "معلمات الملف ا
$text['title-conference_profile_params']['de-at'] = "Profil Parameter";
$text['title-conference_profile_params']['de-ch'] = "Profil Parameter";
$text['title-conference_profile_params']['de-de'] = "Profil Parameter";
$text['title-conference_profile_params']['el-gr'] = "Παράμετροι προφίλ";
$text['title-conference_profile_params']['es-cl'] = "פרמטרים של פרופיל";
$text['title-conference_profile_params']['es-mx'] = "פרמטרים של פרופיל";
$text['title-conference_profile_params']['fr-ca'] = "Paramètres du profil";
@@ -246,6 +256,7 @@ $text['title-conference_profile_param']['ar-eg'] = "معلمة الملف الش
$text['title-conference_profile_param']['de-at'] = "Profil Parameter";
$text['title-conference_profile_param']['de-ch'] = "Profil Parameter";
$text['title-conference_profile_param']['de-de'] = "Profil Parameter";
$text['title-conference_profile_param']['el-gr'] = "Παράμετρος προφίλ";
$text['title-conference_profile_param']['es-cl'] = "Parámetro de perfil";
$text['title-conference_profile_param']['es-mx'] = "Parámetro de perfil";
$text['title-conference_profile_param']['fr-ca'] = "Paramètres du profil";
@@ -270,6 +281,7 @@ $text['title_description-conference_profile_param']['ar-eg'] = "الإعدادا
$text['title_description-conference_profile_param']['de-at'] = "Zugewiesene Einstellungen des Konferenz Profils";
$text['title_description-conference_profile_param']['de-ch'] = "Zugewiesene Einstellungen des Konferenz Profils";
$text['title_description-conference_profile_param']['de-de'] = "Zugewiesene Einstellungen des Konferenz Profils";
$text['title_description-conference_profile_param']['el-gr'] = "Ρυθμίσεις που έχουν εκχωρηθεί στα προφίλ της διάσκεψης.";
$text['title_description-conference_profile_param']['es-cl'] = "Ajustes asignados a los perfiles de conferencia.";
$text['title_description-conference_profile_param']['es-mx'] = "Ajustes asignados a los perfiles de conferencia.";
$text['title_description-conference_profile_param']['fr-ca'] = "Paramètres attribués aux profils de conférence";
@@ -294,6 +306,7 @@ $text['label-profile_param_name']['ar-eg'] = "اسم";
$text['label-profile_param_name']['de-at'] = "Name";
$text['label-profile_param_name']['de-ch'] = "Name";
$text['label-profile_param_name']['de-de'] = "Name";
$text['label-profile_param_name']['el-gr'] = "Ονομα";
$text['label-profile_param_name']['es-cl'] = "Nombre";
$text['label-profile_param_name']['es-mx'] = "Nombre";
$text['label-profile_param_name']['fr-ca'] = "Nom";
@@ -318,6 +331,7 @@ $text['description-profile_param_name']['ar-eg'] = "أدخل اسم المعلم
$text['description-profile_param_name']['de-at'] = "Geben Sie den Namen für den Parameter ein.";
$text['description-profile_param_name']['de-ch'] = "Geben Sie den Namen für den Parameter ein.";
$text['description-profile_param_name']['de-de'] = "Geben Sie den Namen für den Parameter ein.";
$text['description-profile_param_name']['el-gr'] = "Εισαγάγετε το όνομα της παραμέτρου.";
$text['description-profile_param_name']['es-cl'] = "Digite o nome do parâmetro.";
$text['description-profile_param_name']['es-mx'] = "Digite o nome do parâmetro.";
$text['description-profile_param_name']['fr-ca'] = "Entrez le nom du paramètre.";
@@ -342,6 +356,7 @@ $text['label-profile_param_value']['ar-eg'] = "قيمة";
$text['label-profile_param_value']['de-at'] = "Wert";
$text['label-profile_param_value']['de-ch'] = "Wert";
$text['label-profile_param_value']['de-de'] = "Wert";
$text['label-profile_param_value']['el-gr'] = "αξία";
$text['label-profile_param_value']['es-cl'] = "Valor";
$text['label-profile_param_value']['es-mx'] = "Valor";
$text['label-profile_param_value']['fr-ca'] = "Valeur";
@@ -366,6 +381,7 @@ $text['description-profile_param_value']['ar-eg'] = "Introduzca el valor.";
$text['description-profile_param_value']['de-at'] = "Geben Sie den Wert ein.";
$text['description-profile_param_value']['de-ch'] = "Geben Sie den Wert ein.";
$text['description-profile_param_value']['de-de'] = "Geben Sie den Wert ein.";
$text['description-profile_param_value']['el-gr'] = "Εισαγάγετε την τιμή.";
$text['description-profile_param_value']['es-cl'] = "Introduzca el valor.";
$text['description-profile_param_value']['es-mx'] = "Introduzca el valor.";
$text['description-profile_param_value']['fr-ca'] = "Entrez la valeur";
@@ -390,6 +406,7 @@ $text['label-profile_param_enabled']['ar-eg'] = "ممكن";
$text['label-profile_param_enabled']['de-at'] = "Aktiviert";
$text['label-profile_param_enabled']['de-ch'] = "Aktiviert";
$text['label-profile_param_enabled']['de-de'] = "Aktiviert";
$text['label-profile_param_enabled']['el-gr'] = "Ενεργοποιημένο";
$text['label-profile_param_enabled']['es-cl'] = "Activado";
$text['label-profile_param_enabled']['es-mx'] = "Activado";
$text['label-profile_param_enabled']['fr-ca'] = "Activé";
@@ -414,6 +431,7 @@ $text['description-profile_param_enabled']['ar-eg'] = "عيّن حالة الم
$text['description-profile_param_enabled']['de-at'] = "Setzen Sie den Status des Parameters";
$text['description-profile_param_enabled']['de-ch'] = "Setzen Sie den Status des Parameters";
$text['description-profile_param_enabled']['de-de'] = "Setzen Sie den Status des Parameters";
$text['description-profile_param_enabled']['el-gr'] = "Ρυθμίστε την κατάσταση της παραμέτρου.";
$text['description-profile_param_enabled']['es-cl'] = "Establece el estado del parámetro.";
$text['description-profile_param_enabled']['es-mx'] = "Establece el estado del parámetro.";
$text['description-profile_param_enabled']['fr-ca'] = "Définir le statut du paramètre";
@@ -438,6 +456,7 @@ $text['label-profile_param_description']['ar-eg'] = "وصف";
$text['label-profile_param_description']['de-at'] = "Beschreibung";
$text['label-profile_param_description']['de-ch'] = "Beschreibung";
$text['label-profile_param_description']['de-de'] = "Beschreibung";
$text['label-profile_param_description']['el-gr'] = "Περιγραφή";
$text['label-profile_param_description']['es-cl'] = "Descripción";
$text['label-profile_param_description']['es-mx'] = "Descripción";
$text['label-profile_param_description']['fr-ca'] = "Description";
@@ -462,6 +481,7 @@ $text['description-profile_param_description']['ar-eg'] = "أدخل الوصف."
$text['description-profile_param_description']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_param_description']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_param_description']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-profile_param_description']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-profile_param_description']['es-cl'] = "Introduce la descripción.";
$text['description-profile_param_description']['es-mx'] = "Introduce la descripción.";
$text['description-profile_param_description']['fr-ca'] = "Entrez la description";
+10 -2
View File
@@ -35,12 +35,14 @@
$apps[$x]['destinations'][$y]['label'] = "conferences";
$apps[$x]['destinations'][$y]['name'] = "conferences";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and conference_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "conference_name asc";
$apps[$x]['destinations'][$y]['order_by'] = "natural_sort(conference_extension) asc";
$apps[$x]['destinations'][$y]['field']['conference_uuid'] = "conference_uuid";
$apps[$x]['destinations'][$y]['field']['uuid'] = "conference_uuid";
$apps[$x]['destinations'][$y]['field']['name'] = "conference_name";
$apps[$x]['destinations'][$y]['field']['destination'] = "conference_extension";
$apps[$x]['destinations'][$y]['field']['extension'] = "conference_extension";
$apps[$x]['destinations'][$y]['field']['description'] = "conference_description";
$apps[$x]['destinations'][$y]['field']['context'] = "conference_context";
$apps[$x]['destinations'][$y]['select_value']['dialplan'] = "transfer:\${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_value']['ivr'] = "menu-exec-app:transfer \${destination} XML \${context}";
$apps[$x]['destinations'][$y]['select_label'] = "\${destination} \${name} \${description}";
@@ -85,6 +87,9 @@
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "conference_context";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "conference_email_address";
$y++;
$apps[$x]['permissions'][$y]['name'] = "conference_account_code";
@@ -95,7 +100,6 @@
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
//cache details
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
@@ -168,6 +172,10 @@
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the description.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_context";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "conference_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select whether to enable or disable the conference.";
+12
View File
@@ -2,6 +2,7 @@
if ($domains_processed == 1) {
//replace - with an @ symbol
$sql = "update v_dialplan_details ";
$sql .= "set dialplan_detail_data = replace(dialplan_detail_data, '-','@') ";
$sql .= "where dialplan_detail_type = 'conference' and dialplan_detail_data like '%-%';";
@@ -9,6 +10,17 @@ if ($domains_processed == 1) {
$database->execute($sql);
unset($sql);
//add the domain_name as the context
$sql = "UPDATE v_conferences as c ";
$sql .= "SET conference_context = ( ";
$sql .= " SELECT domain_name FROM v_domains as d ";
$sql .= " WHERE d.domain_uuid = c.domain_uuid ";
$sql .= ") ";
$sql .= "WHERE conference_context is null; ";
$database = new database;
$database->execute($sql);
unset($sql);
}
?>
+70 -31
View File
@@ -6,6 +6,7 @@ $text['title-conferences']['ar-eg'] = "المؤتمرات";
$text['title-conferences']['de-at'] = "Konferenzen";
$text['title-conferences']['de-ch'] = "Konferenzen";
$text['title-conferences']['de-de'] = "Konferenzen";
$text['title-conferences']['el-gr'] = "συνέδρια";
$text['title-conferences']['es-cl'] = "Conferencias";
$text['title-conferences']['es-mx'] = "Conferencias";
$text['title-conferences']['fr-ca'] = "Conférences";
@@ -30,6 +31,7 @@ $text['title-conference']['ar-eg'] = "مؤتمر";
$text['title-conference']['de-at'] = "Konferenzen";
$text['title-conference']['de-ch'] = "Konferenzen";
$text['title-conference']['de-de'] = "Konferenzen";
$text['title-conference']['el-gr'] = "Διάσκεψη";
$text['title-conference']['es-cl'] = "Conferencias";
$text['title-conference']['es-mx'] = "Conferencias";
$text['title-conference']['fr-ca'] = "Conférences";
@@ -54,6 +56,7 @@ $text['description']['ar-eg'] = "يُستخدم المؤتمر لإعداد غر
$text['description']['de-at'] = "Konferenzen wird verwendet, um Konferenzräume mit einem Namen, Beschreibung und optionaler PIN zu erstellen.";
$text['description']['de-ch'] = "Konferenzen wird verwendet, um Konferenzräume mit einem Namen, Beschreibung und optionaler PIN zu erstellen.";
$text['description']['de-de'] = "Konferenzen wird verwendet, um Konferenzräume mit einem Namen, Beschreibung und optionaler PIN zu erstellen.";
$text['description']['el-gr'] = "Το Conference χρησιμοποιείται για τη ρύθμιση αιθουσών συνεδριάσεων με όνομα, περιγραφή και προαιρετικό αριθμό pin.";
$text['description']['es-cl'] = "Las conferencias son usadas para configurar salas con un nombre, descripción y un número de acceso pin (opcional).";
$text['description']['es-mx'] = "Las conferencias son usadas para configurar salas con un nombre, descripción y un número de acceso pin (opcional).";
$text['description']['fr-ca'] = "Ce menu est utilisé pour créer des salles de conférence avec un nom, une description et en option un code PIN.";
@@ -66,7 +69,7 @@ $text['description']['pt-br'] = "As conferências são utilizadas para configura
$text['description']['pt-pt'] = "As conferências são utilizadas para configurar salas de conferência com um nome, descrição e número pin opcional.";
$text['description']['ro-ro'] = "Conferința este folosită pentru a configura săli de conferințe cu un nume, o descriere și un număr PIN opțional.";
$text['description']['ru-ru'] = "Конференции используются для настройки конференц-залов с именем, описанием и необязательным номером контакта.";
$text['description']['sv-se'] = "Konferenser används för att konfigurera konferensrum med namn, beskrivning och valfritt PIN-nummer.";
$text['description']['sv-se'] = "Konferenser används för att konfigurera konferensrum med namn, beskrivning och frivillig pinkod.";
$text['description']['uk-ua'] = "Конференція використовується для налаштування конференц-кімнат із назвою, описом і додатковим PIN-кодом.";
$text['description']['zh-cn'] = "Conference 用于设置带有名称、描述和可选密码的会议室。";
$text['description']['ja-jp'] = "会議は、名前、説明、およびオプションのピン番号を使用して会議室をセットアップするために使用されます。";
@@ -78,6 +81,7 @@ $text['label-active_conferences']['ar-eg'] = "المؤتمرات النشطة";
$text['label-active_conferences']['de-at'] = "Aktive Konferenzen";
$text['label-active_conferences']['de-ch'] = "Aktive Konferenzen";
$text['label-active_conferences']['de-de'] = "Aktive Konferenzen";
$text['label-active_conferences']['el-gr'] = "Ενεργά Συνέδρια";
$text['label-active_conferences']['es-cl'] = "Conferencias Activas";
$text['label-active_conferences']['es-mx'] = "Conferencias Activas";
$text['label-active_conferences']['fr-ca'] = "Conférences actives";
@@ -102,6 +106,7 @@ $text['button-view_active']['ar-eg'] = "مشاهدة ملف Active";
$text['button-view_active']['de-at'] = "Aktive anzeigen";
$text['button-view_active']['de-ch'] = "Aktive anzeigen";
$text['button-view_active']['de-de'] = "Aktive anzeigen";
$text['button-view_active']['el-gr'] = "Προβολή Ενεργό";
$text['button-view_active']['es-cl'] = "Ver Activo";
$text['button-view_active']['es-mx'] = "Ver Activo";
$text['button-view_active']['fr-ca'] = "Voir Active";
@@ -126,6 +131,7 @@ $text['table-name']['ar-eg'] = "اسم";
$text['table-name']['de-at'] = "Name";
$text['table-name']['de-ch'] = "Name";
$text['table-name']['de-de'] = "Name";
$text['table-name']['el-gr'] = "Ονομα";
$text['table-name']['es-cl'] = "Nombre";
$text['table-name']['es-mx'] = "Nombre";
$text['table-name']['fr-ca'] = "Nom";
@@ -150,6 +156,7 @@ $text['table-extension']['ar-eg'] = "امتداد";
$text['table-extension']['de-at'] = "Nebenstelle";
$text['table-extension']['de-ch'] = "Nebenstelle";
$text['table-extension']['de-de'] = "Nebenstelle";
$text['table-extension']['el-gr'] = "Επέκταση";
$text['table-extension']['es-cl'] = "Extensión";
$text['table-extension']['es-mx'] = "Extensión";
$text['table-extension']['fr-ca'] = "Extension";
@@ -174,6 +181,7 @@ $text['table-profile']['ar-eg'] = "حساب تعريفي";
$text['table-profile']['de-at'] = "Profile";
$text['table-profile']['de-ch'] = "Profile";
$text['table-profile']['de-de'] = "Profile";
$text['table-profile']['el-gr'] = "Προφίλ";
$text['table-profile']['es-cl'] = "Perfil";
$text['table-profile']['es-mx'] = "Perfil";
$text['table-profile']['fr-ca'] = "Profile";
@@ -198,6 +206,7 @@ $text['table-order']['ar-eg'] = "طلب";
$text['table-order']['de-at'] = "Reihenfolge";
$text['table-order']['de-ch'] = "Reihenfolge";
$text['table-order']['de-de'] = "Reihenfolge";
$text['table-order']['el-gr'] = "Σειρά";
$text['table-order']['es-cl'] = "Orden";
$text['table-order']['es-mx'] = "Orden";
$text['table-order']['fr-ca'] = "Ordre";
@@ -222,6 +231,7 @@ $text['table-enabled']['ar-eg'] = "ممكن";
$text['table-enabled']['de-at'] = "Aktiviert";
$text['table-enabled']['de-ch'] = "Aktiviert";
$text['table-enabled']['de-de'] = "Aktiviert";
$text['table-enabled']['el-gr'] = "Ενεργοποιημένο";
$text['table-enabled']['es-cl'] = "Activo";
$text['table-enabled']['es-mx'] = "Activo";
$text['table-enabled']['fr-ca'] = "Actif";
@@ -246,6 +256,7 @@ $text['table-description']['ar-eg'] = "وصف";
$text['table-description']['de-at'] = "Beschreibung";
$text['table-description']['de-ch'] = "Beschreibung";
$text['table-description']['de-de'] = "Beschreibung";
$text['table-description']['el-gr'] = "Περιγραφή";
$text['table-description']['es-cl'] = "Descripción";
$text['table-description']['es-mx'] = "Descripción";
$text['table-description']['fr-ca'] = "Description";
@@ -270,6 +281,7 @@ $text['confirm-add']['ar-eg'] = "أضف مكتمل";
$text['confirm-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-ch'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['de-de'] = "Erfolgreich hinzugefügt";
$text['confirm-add']['el-gr'] = "Προσθήκη Ολοκληρωμένη";
$text['confirm-add']['es-cl'] = "Agregado Completo";
$text['confirm-add']['es-mx'] = "Agregado Completo";
$text['confirm-add']['fr-ca'] = "Ajouté";
@@ -294,6 +306,7 @@ $text['confirm-update']['ar-eg'] = "تحديث كاملة";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['confirm-update']['de-de'] = "Aktualisierung durchgeführt";
$text['confirm-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['es-mx'] = "Actualización Completa";
$text['confirm-update']['fr-ca'] = "Mis a jour";
@@ -318,6 +331,7 @@ $text['confirm-name']['ar-eg'] = "يرجى تقديم: الاسم";
$text['confirm-name']['de-at'] = "Bitte angeben: Name";
$text['confirm-name']['de-ch'] = "Bitte angeben: Name";
$text['confirm-name']['de-de'] = "Bitte angeben: Name";
$text['confirm-name']['el-gr'] = "Δώστε: Όνομα";
$text['confirm-name']['es-cl'] = "Por favor, indique: Nombre";
$text['confirm-name']['es-mx'] = "Por favor, indique: Nombre";
$text['confirm-name']['fr-ca'] = "Merci d'indiquer: Nom";
@@ -342,6 +356,7 @@ $text['confirm-extension']['ar-eg'] = "يرجى تقديم: تمديد";
$text['confirm-extension']['de-at'] = "Bitte angeben: Nebenstelle";
$text['confirm-extension']['de-ch'] = "Bitte angeben: Nebenstelle";
$text['confirm-extension']['de-de'] = "Bitte angeben: Nebenstelle";
$text['confirm-extension']['el-gr'] = "Παρέχετε: Επέκταση";
$text['confirm-extension']['es-cl'] = "Por favor, indique: Extensión";
$text['confirm-extension']['es-mx'] = "Por favor, indique: Extensión";
$text['confirm-extension']['fr-ca'] = "Merci d'indiquer: Extension";
@@ -366,6 +381,7 @@ $text['confirm-profile']['ar-eg'] = "يرجى تقديم: الملف الشخص
$text['confirm-profile']['de-at'] = "Bitte angeben: Profil";
$text['confirm-profile']['de-ch'] = "Bitte angeben: Profil";
$text['confirm-profile']['de-de'] = "Bitte angeben: Profil";
$text['confirm-profile']['el-gr'] = "Δώστε: Προφίλ";
$text['confirm-profile']['es-cl'] = "Por favor, indique: Perfil";
$text['confirm-profile']['es-mx'] = "Por favor, indique: Perfil";
$text['confirm-profile']['fr-ca'] = "Merci d'indiquer: Profile";
@@ -390,6 +406,7 @@ $text['confirm-enabled']['ar-eg'] = "يرجى تقديم: ممكّن";
$text['confirm-enabled']['de-at'] = "Bitte angeben: Aktiviert";
$text['confirm-enabled']['de-ch'] = "Bitte angeben: Aktiviert";
$text['confirm-enabled']['de-de'] = "Bitte angeben: Aktiviert";
$text['confirm-enabled']['el-gr'] = "Δώστε: Ενεργοποιημένο";
$text['confirm-enabled']['es-cl'] = "Por favor, indique: Activado";
$text['confirm-enabled']['es-mx'] = "Por favor, indique: Activado";
$text['confirm-enabled']['fr-ca'] = "Merci d'indiquer: Actif";
@@ -414,6 +431,7 @@ $text['label-conference-add']['ar-eg'] = "المؤتمرات إضافة";
$text['label-conference-add']['de-at'] = "Konferenz hinzufügen";
$text['label-conference-add']['de-ch'] = "Konferenz hinzufügen";
$text['label-conference-add']['de-de'] = "Konferenz hinzufügen";
$text['label-conference-add']['el-gr'] = "Συνέδρια Προσθήκη";
$text['label-conference-add']['es-cl'] = "Agregar Conferencias";
$text['label-conference-add']['es-mx'] = "Agregar Conferencias";
$text['label-conference-add']['fr-ca'] = "Ajouter des conférences";
@@ -438,6 +456,7 @@ $text['label-conference-edit']['ar-eg'] = "تحرير المؤتمرات";
$text['label-conference-edit']['de-at'] = "Konferenz bearbeiten";
$text['label-conference-edit']['de-ch'] = "Konferenz bearbeiten";
$text['label-conference-edit']['de-de'] = "Konferenz bearbeiten";
$text['label-conference-edit']['el-gr'] = "Συνέδρια Επεξεργασία";
$text['label-conference-edit']['es-cl'] = "Edición de Conferencias";
$text['label-conference-edit']['es-mx'] = "Edición de Conferencias";
$text['label-conference-edit']['fr-ca'] = "Editer les conférences";
@@ -462,6 +481,7 @@ $text['label-extension']['ar-eg'] = "امتداد";
$text['label-extension']['de-at'] = "Nebenstelle";
$text['label-extension']['de-ch'] = "Nebenstelle";
$text['label-extension']['de-de'] = "Nebenstelle";
$text['label-extension']['el-gr'] = "Επέκταση";
$text['label-extension']['es-cl'] = "Extensión";
$text['label-extension']['es-mx'] = "Extensión";
$text['label-extension']['fr-ca'] = "Extension";
@@ -486,6 +506,7 @@ $text['description-name']['ar-eg'] = "أدخل اسم المؤتمر.";
$text['description-name']['de-at'] = "Geben Sie einen Namen für die Konferenz ein.";
$text['description-name']['de-ch'] = "Geben Sie einen Namen für die Konferenz ein.";
$text['description-name']['de-de'] = "Geben Sie einen Namen für die Konferenz ein.";
$text['description-name']['el-gr'] = "Εισαγάγετε το όνομα της διάσκεψης.";
$text['description-name']['es-cl'] = "Ingrese el nombre de la conferencia.";
$text['description-name']['es-mx'] = "Ingrese el nombre de la conferencia.";
$text['description-name']['fr-ca'] = "Entrer le nom de la conférence.";
@@ -510,6 +531,7 @@ $text['description-extension']['ar-eg'] = "أدخل الرقم الداخلي ل
$text['description-extension']['de-at'] = "Geben Sie die Nebenstelle der Konferenz an.";
$text['description-extension']['de-ch'] = "Geben Sie die Nebenstelle der Konferenz an.";
$text['description-extension']['de-de'] = "Geben Sie die Nebenstelle der Konferenz an.";
$text['description-extension']['el-gr'] = "Εισαγάγετε τον αριθμό επέκτασης συνεδρίου.";
$text['description-extension']['es-cl'] = "Ingrese el número de extensión de la conferencia";
$text['description-extension']['es-mx'] = "Ingrese el número de extensión de la conferencia";
$text['description-extension']['fr-ca'] = "Entrer le numéro d'extension de la conférence.";
@@ -534,6 +556,7 @@ $text['description-3']['ar-eg'] = "لرصد غرفة الاجتماعات وال
$text['description-3']['de-at'] = "um eine Konferenz zu überwachen und zu steuern.";
$text['description-3']['de-ch'] = "um eine Konferenz zu überwachen und zu steuern.";
$text['description-3']['de-de'] = "um eine Konferenz zu überwachen und zu steuern.";
$text['description-3']['el-gr'] = "για παρακολούθηση και αλληλεπίδραση με την αίθουσα συνεδριάσεων.";
$text['description-3']['es-cl'] = "para monitorear e interactuar con la sala de conferencia.";
$text['description-3']['es-mx'] = "para monitorear e interactuar con la sala de conferencia.";
$text['description-3']['fr-ca'] = "Superviser et interagir avec la salle de conférence.";
@@ -558,6 +581,7 @@ $text['label-pin']['ar-eg'] = "الرقم السري";
$text['label-pin']['de-at'] = "PIN Nummer";
$text['label-pin']['de-ch'] = "PIN Nummer";
$text['label-pin']['de-de'] = "PIN Nummer";
$text['label-pin']['el-gr'] = "Αριθμός καρφίτσας";
$text['label-pin']['es-cl'] = "Número Pin";
$text['label-pin']['es-mx'] = "Número Pin";
$text['label-pin']['fr-ca'] = "Code Pin";
@@ -570,7 +594,7 @@ $text['label-pin']['pt-br'] = "Código Pin";
$text['label-pin']['pt-pt'] = "Código Pin";
$text['label-pin']['ro-ro'] = "Numarul pin";
$text['label-pin']['ru-ru'] = "PIN Номер";
$text['label-pin']['sv-se'] = "Pin Nummer";
$text['label-pin']['sv-se'] = "Pinkod";
$text['label-pin']['uk-ua'] = "PIN-код";
$text['label-pin']['zh-cn'] = "密码";
$text['label-pin']['ja-jp'] = "ピン番号";
@@ -582,6 +606,7 @@ $text['description-pin']['ar-eg'] = "رقم التعريف الشخصي الاخ
$text['description-pin']['de-at'] = "Optionale PIN Nummer um den Zugriff auf die Konferenz ab zu sichern.)";
$text['description-pin']['de-ch'] = "Optionale PIN Nummer um den Zugriff auf die Konferenz ab zu sichern.)";
$text['description-pin']['de-de'] = "Optionale PIN Nummer um den Zugriff auf die Konferenz ab zu sichern.)";
$text['description-pin']['el-gr'] = "Προαιρετικός αριθμός pin για ασφαλή πρόσβαση στη διάσκεψη.";
$text['description-pin']['es-cl'] = "Número de pin opcional para garantizar el acceso a la conferencia.";
$text['description-pin']['es-mx'] = "Número de pin opcional para garantizar el acceso a la conferencia.";
$text['description-pin']['fr-ca'] = "Numéro d'identifiant pour sécuriser l'accès à la conf. (Optionnel)";
@@ -594,7 +619,7 @@ $text['description-pin']['pt-br'] = "Código pin opcional para garantir o acesso
$text['description-pin']['pt-pt'] = "Código pin opcional para garantir o acesso à conferência.";
$text['description-pin']['ro-ro'] = "Număr PIN opțional pentru a securiza accesul la conferință.";
$text['description-pin']['ru-ru'] = "Дополнительный PIN номер контакта для обеспечения доступа к конференции.";
$text['description-pin']['sv-se'] = "Frivilligt pin nummer för att säkra tillgången till konferensen.";
$text['description-pin']['sv-se'] = "Valfritt, pinkod för att säkra åtkomst till konferensen.";
$text['description-pin']['uk-ua'] = "Додатковий PIN-код для безпечного доступу до конференції.";
$text['description-pin']['zh-cn'] = "可选的 PIN 码以确保会议访问安全。";
$text['description-pin']['ja-jp'] = "会議へのアクセスを保護するためのオプションの暗証番号。";
@@ -602,21 +627,22 @@ $text['description-pin']['ko-kr'] = "회의에 대한 액세스를 보호하기
$text['label-email_address']['en-us'] = "Email Address";
$text['label-email_address']['en-gb'] = "Email Address";
$text['label-email_address']['ar-eg'] = "البريد الإليكتروني";
$text['label-email_address']['de-at'] = "Email Address";
$text['label-email_address']['de-ch'] = "Email Address";
$text['label-email_address']['de-de'] = "Email Address";
$text['label-email_address']['es-cl'] = "Email Address";
$text['label-email_address']['es-mx'] = "Email Address";
$text['label-email_address']['ar-eg'] = "عنوان البريد الإلكتروني";
$text['label-email_address']['de-at'] = "E-Mail-Adresse";
$text['label-email_address']['de-ch'] = "E-Mail-Adresse";
$text['label-email_address']['de-de'] = "E-Mail-Adresse";
$text['label-email_address']['el-gr'] = "Διεύθυνση ηλεκτρονικού ταχυδρομείου";
$text['label-email_address']['es-cl'] = "Dirección de correo electrónico";
$text['label-email_address']['es-mx'] = "Dirección de correo electrónico";
$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'] = "Email Address";
$text['label-email_address']['it-it'] = "Indirizzo e-mail";
$text['label-email_address']['nl-nl'] = "E-mail Address";
$text['label-email_address']['pl-pl'] = "Adres Email";
$text['label-email_address']['pt-br'] = "Email Address";
$text['label-email_address']['pt-pt'] = "Email Address";
$text['label-email_address']['ro-ro'] = "Email Address";
$text['label-email_address']['pt-br'] = "Endereço de email";
$text['label-email_address']['pt-pt'] = "Endereço de email";
$text['label-email_address']['ro-ro'] = "Adresa de e-mail";
$text['label-email_address']['ru-ru'] = "Электронная Почта";
$text['label-email_address']['sv-se'] = "E-post";
$text['label-email_address']['uk-ua'] = "Електронна пошта";
@@ -626,24 +652,25 @@ $text['label-email_address']['ko-kr'] = "이메일 주소";
$text['description-email_address']['en-us'] = "Optional conference email address.";
$text['description-email_address']['en-gb'] = "Optional conference email address.";
$text['description-email_address']['ar-eg'] = "البريد الإليكتروني";
$text['description-email_address']['de-at'] = "Optional conference email address.";
$text['description-email_address']['de-ch'] = "Optional conference email address.";
$text['description-email_address']['de-de'] = "Optional conference email address.";
$text['description-email_address']['es-cl'] = "Optional conference email address.";
$text['description-email_address']['es-mx'] = "Optional conference email address.";
$text['description-email_address']['fr-ca'] = "Courriel";
$text['description-email_address']['fr-fr'] = "Courriel";
$text['description-email_address']['he-il'] = "אימייל";
$text['description-email_address']['it-it'] = "Optional conference email address.";
$text['description-email_address']['nl-nl'] = "Optional conference E-mail Address";
$text['description-email_address']['ar-eg'] = "عنوان البريد الإلكتروني الاختياري للمؤتمر.";
$text['description-email_address']['de-at'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['de-ch'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['de-de'] = "Optionale Konferenz-E-Mail-Adresse.";
$text['description-email_address']['el-gr'] = "Προαιρετική διεύθυνση email συνεδρίου.";
$text['description-email_address']['es-cl'] = "Dirección de correo electrónico de la conferencia opcional.";
$text['description-email_address']['es-mx'] = "Dirección de correo electrónico de la conferencia opcional.";
$text['description-email_address']['fr-ca'] = "Adresse e-mail de la conférence facultative.";
$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']['nl-nl'] = "Optioneel e-mailadres voor de conferentie.";
$text['description-email_address']['pl-pl'] = "Opcjonalny adres email konferencji.";
$text['description-email_address']['pt-br'] = "Optional conference email address.";
$text['description-email_address']['pt-pt'] = "Optional conference email address.";
$text['description-email_address']['ro-ro'] = "Optional conference email address.";
$text['description-email_address']['ru-ru'] = "Электронная Почта";
$text['description-email_address']['pt-br'] = "Endereço de e-mail de conferência opcional.";
$text['description-email_address']['pt-pt'] = "Endereço de e-mail de conferência opcional.";
$text['description-email_address']['ro-ro'] = "Opțional adresa de e-mail a conferinței.";
$text['description-email_address']['ru-ru'] = "Дополнительный адрес электронной почты конференции.";
$text['description-email_address']['sv-se'] = "Valfri e-postadress för konferens.";
$text['description-email_address']['uk-ua'] = "Електронна пошта";
$text['description-email_address']['uk-ua'] = "Додаткова електронна адреса конференції.";
$text['description-email_address']['zh-cn'] = "可选的会议电子邮件地址。";
$text['description-email_address']['ja-jp'] = "オプションの会議の電子メール アドレス。";
$text['description-email_address']['ko-kr'] = "선택적 컨퍼런스 이메일 주소.";
@@ -654,6 +681,7 @@ $text['confirm-delete-2']['ar-eg'] = "هل تريد حقًا حذف هذا؟";
$text['confirm-delete-2']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-2']['de-ch'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-2']['de-de'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete-2']['el-gr'] = "Θέλετε πραγματικά να το διαγράψετε;";
$text['confirm-delete-2']['es-cl'] = "¿Realmente desea eliminar esto?";
$text['confirm-delete-2']['es-mx'] = "¿Realmente desea eliminar esto?";
$text['confirm-delete-2']['fr-ca'] = "Voulez-vous vraiment supprimer cela?";
@@ -678,6 +706,7 @@ $text['description-info']['ar-eg'] = "أدخل الوصف.";
$text['description-info']['de-at'] = "Geben Sie die Beschreibung ein.";
$text['description-info']['de-ch'] = "Geben Sie die Beschreibung ein.";
$text['description-info']['de-de'] = "Geben Sie die Beschreibung ein.";
$text['description-info']['el-gr'] = "Εισαγάγετε την περιγραφή.";
$text['description-info']['es-cl'] = "Ingrese una descripción.";
$text['description-info']['es-mx'] = "Ingrese una descripción.";
$text['description-info']['fr-ca'] = "Saisissez le descriptif.";
@@ -702,6 +731,7 @@ $text['description-conference-enable']['ar-eg'] = "حدد ما إذا كنت ت
$text['description-conference-enable']['de-at'] = "Wählen Sie, ob die Konferenz ein- oder ausgeschaltet werden soll.";
$text['description-conference-enable']['de-ch'] = "Wählen Sie, ob die Konferenz ein- oder ausgeschaltet werden soll.";
$text['description-conference-enable']['de-de'] = "Wählen Sie, ob die Konferenz ein- oder ausgeschaltet werden soll.";
$text['description-conference-enable']['el-gr'] = "Επιλέξτε εάν θα ενεργοποιήσετε ή θα απενεργοποιήσετε τη διάσκεψη.";
$text['description-conference-enable']['es-cl'] = "Indique si desea activar o desactivar la conferencia.";
$text['description-conference-enable']['es-mx'] = "Indique si desea activar o desactivar la conferencia.";
$text['description-conference-enable']['fr-ca'] = "Choisir d'activer ou non la conférence.";
@@ -726,6 +756,7 @@ $text['description-order']['ar-eg'] = "أدخل رقم الطلب.";
$text['description-order']['de-at'] = "Geben Sie die Nummer für die Reihenfolge an.";
$text['description-order']['de-ch'] = "Geben Sie die Nummer für die Reihenfolge an.";
$text['description-order']['de-de'] = "Geben Sie die Nummer für die Reihenfolge an.";
$text['description-order']['el-gr'] = "Εισαγάγετε τον αριθμό παραγγελίας.";
$text['description-order']['es-cl'] = "Ingrese el número de orden.";
$text['description-order']['es-mx'] = "Ingrese el número de orden.";
$text['description-order']['fr-ca'] = "Entrer le numéro d'ordre.";
@@ -750,10 +781,11 @@ $text['description-user-add']['ar-eg'] = "عيّن المستخدمين الذي
$text['description-user-add']['de-at'] = "Wählen Sie die Benutzer aus, welche die Konferenz administrieren können.";
$text['description-user-add']['de-ch'] = "Wählen Sie die Benutzer aus, welche die Konferenz administrieren können.";
$text['description-user-add']['de-de'] = "Wählen Sie die Benutzer aus, welche die Konferenz administrieren können.";
$text['description-user-add']['el-gr'] = "Ορίστε τους χρήστες που μπορούν να διαχειριστούν αυτήν την επέκταση συνδιάσκεψης.";
$text['description-user-add']['es-cl'] = "Asignar usuarios para que puedan administrar esta extensión de conferencia.";
$text['description-user-add']['es-mx'] = "Asignar usuarios para que puedan administrar esta extensión de conferencia.";
$text['description-user-add']['fr-ca'] = "Wählen Sie die Benutzer aus, welche die Konferenz administrieren können.";
$text['description-user-add']['fr-fr'] = "Wählen Sie die Benutzer aus, welche die Konferenz administrieren können.";
$text['description-user-add']['fr-ca'] = "Attribuez les utilisateurs qui peuvent gérer cette extension de conférence.";
$text['description-user-add']['fr-fr'] = "Attribuez les utilisateurs qui peuvent gérer cette extension de conférence.";
$text['description-user-add']['he-il'] = "הקצה את המשתמשים שיכולים לנהל את הרחבה זו לוועידה.";
$text['description-user-add']['it-it'] = "Imposta gli utenti che possono gestire questa conferenza.";
$text['description-user-add']['nl-nl'] = "Wijs de gebruikers die deze conferentie ruimte kunnen beheren.";
@@ -774,6 +806,7 @@ $text['description-profile']['ar-eg'] = "ملف تعريف المؤتمر عبا
$text['description-profile']['de-at'] = "Ein Profil ist eine Zusammenfassung von Parametern für die Konferenz.";
$text['description-profile']['de-ch'] = "Ein Profil ist eine Zusammenfassung von Parametern für die Konferenz.";
$text['description-profile']['de-de'] = "Ein Profil ist eine Zusammenfassung von Parametern für die Konferenz.";
$text['description-profile']['el-gr'] = "Το Προφίλ Διάσκεψης είναι μια συλλογή ρυθμίσεων για τη διάσκεψη.";
$text['description-profile']['es-cl'] = "El perfil de conferencia es una colección de ajustes para la conferencia.";
$text['description-profile']['es-mx'] = "El perfil de conferencia es una colección de ajustes para la conferencia.";
$text['description-profile']['fr-ca'] = "Le profile de la conférence est une liste de paramètres pour la conférence.";
@@ -798,6 +831,7 @@ $text['description-flags']['ar-eg'] = "أعلام المؤتمر الاختيا
$text['description-flags']['de-at'] = "Optionale Attribute für die Konferenz. Beispiele: mute|deaf|waste|moderator";
$text['description-flags']['de-ch'] = "Optionale Attribute für die Konferenz. Beispiele: mute|deaf|waste|moderator";
$text['description-flags']['de-de'] = "Optionale Attribute für die Konferenz. Beispiele: mute|deaf|waste|moderator";
$text['description-flags']['el-gr'] = "Προαιρετικές σημαίες συνεδρίου. παραδείγματα: βουβός|κουφός|απόβλητος|συντονιστής";
$text['description-flags']['es-cl'] = "Flags opcionales de conferencia. Ejemplo: mute|deaf|waste|moderator";
$text['description-flags']['es-mx'] = "Flags opcionales de conferencia. Ejemplo: mute|deaf|waste|moderator";
$text['description-flags']['fr-ca'] = "Flags Optionnels de la conférence. exemple: mute|deaf|waste|moderator";
@@ -822,6 +856,7 @@ $text['description-account_code']['ar-eg'] = "أدخل رمز الحساب هن
$text['description-account_code']['de-at'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['de-ch'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['de-de'] = "Geben Sie den Account Code hier an.";
$text['description-account_code']['el-gr'] = "Εισαγάγετε τον κωδικό λογαριασμού εδώ.";
$text['description-account_code']['es-cl'] = "Ingrese el código de cuenta aquí.";
$text['description-account_code']['es-mx'] = "Ingrese el código de cuenta aquí.";
$text['description-account_code']['fr-ca'] = "Entrez le code de compte ici.";
@@ -846,6 +881,7 @@ $text['label-user_list']['ar-eg'] = "قائمة المستخدم";
$text['label-user_list']['de-at'] = "Benutzerliste";
$text['label-user_list']['de-ch'] = "Benutzerliste";
$text['label-user_list']['de-de'] = "Benutzerliste";
$text['label-user_list']['el-gr'] = "Λίστα χρηστών";
$text['label-user_list']['es-cl'] = "Lista de usuarios";
$text['label-user_list']['es-mx'] = "Lista de usuarios";
$text['label-user_list']['fr-ca'] = "Liste des utilisateurs";
@@ -870,6 +906,7 @@ $text['label-flags']['ar-eg'] = "أعلام";
$text['label-flags']['de-at'] = "Attribute";
$text['label-flags']['de-ch'] = "Attribute";
$text['label-flags']['de-de'] = "Attribute";
$text['label-flags']['el-gr'] = "Σημαίες";
$text['label-flags']['es-cl'] = "Banderas";
$text['label-flags']['es-mx'] = "Banderas";
$text['label-flags']['fr-ca'] = "Drapeaux";
@@ -894,6 +931,7 @@ $text['label-account_code']['ar-eg'] = "رمز الحساب";
$text['label-account_code']['de-at'] = "Kontoschlüssel";
$text['label-account_code']['de-ch'] = "Kontoschlüssel";
$text['label-account_code']['de-de'] = "Kontoschlüssel";
$text['label-account_code']['el-gr'] = "Κωδικός λογαριασμού";
$text['label-account_code']['es-cl'] = "Código de Cuenta";
$text['label-account_code']['es-mx'] = "Código de Cuenta";
$text['label-account_code']['fr-ca'] = "Centre de frais";
@@ -918,6 +956,7 @@ $text['label-view']['ar-eg'] = "منظر";
$text['label-view']['de-at'] = "Ansicht";
$text['label-view']['de-ch'] = "Ansicht";
$text['label-view']['de-de'] = "Ansicht";
$text['label-view']['el-gr'] = "Θέα";
$text['label-view']['es-cl'] = "Ver";
$text['label-view']['es-mx'] = "Ver";
$text['label-view']['fr-ca'] = "Vue";
+27 -1
View File
@@ -72,6 +72,14 @@
$conference_description = $_POST["conference_description"];
$conference_enabled = $_POST["conference_enabled"] ?? 'false';
//set the context for users that do not have the permission
if (permission_exists('conference_context')) {
$conference_context = $_POST["conference_context"];
}
else if ($action == 'add') {
$conference_context = $_SESSION['domain_name'];
}
//sanitize the conference name
$conference_name = preg_replace("/[^A-Za-z0-9\- ]/", "", $conference_name);
//$conference_name = str_replace(" ", "-", $conference_name);
@@ -199,6 +207,7 @@
}
$array['conferences'][0]['conference_order'] = $conference_order;
$array['conferences'][0]['conference_description'] = $conference_description;
$array['conferences'][0]['conference_context'] = $conference_context;
$array['conferences'][0]['conference_enabled'] = $conference_enabled;
//conference pin number
@@ -220,11 +229,13 @@
$array['dialplans'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['dialplans'][0]['dialplan_name'] = $conference_name;
$array['dialplans'][0]['dialplan_number'] = $conference_extension;
if (isset($conference_context)) {
$array['dialplans'][0]["dialplan_context"] = $conference_context;
}
$array['dialplans'][0]['app_uuid'] = 'b81412e8-7253-91f4-e48e-42fc2c9a38d9';
$array['dialplans'][0]['dialplan_xml'] = $dialplan_xml;
$array['dialplans'][0]['dialplan_continue'] = 'false';
$array['dialplans'][0]['dialplan_order'] = '333';
$array['dialplans'][0]['dialplan_context'] = $_SESSION['domain_name'];
$array['dialplans'][0]['dialplan_enabled'] = $conference_enabled;
$array['dialplans'][0]['dialplan_description'] = $conference_description;
@@ -295,6 +306,7 @@
$conference_account_code = $row["conference_account_code"];
$conference_order = $row["conference_order"];
$conference_description = $row["conference_description"];
$conference_context = $row["conference_context"];
$conference_enabled = $row["conference_enabled"];
$conference_name = str_replace("-", " ", $conference_name);
}
@@ -302,6 +314,7 @@
}
//set the defaults
if (empty($conference_context)) { $conference_context = $_SESSION['domain_name']; }
if (empty($conference_enabled)) { $conference_enabled = 'true'; }
//get the conference profiles
@@ -524,6 +537,19 @@
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('conference_context')) {
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-context']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='conference_context' maxlength='255' value=\"".escape($conference_context)."\" required='required'>\n";
echo "<br />\n";
echo $text['description-enter-context']."\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['table-enabled']."\n";
+2 -1
View File
@@ -85,6 +85,7 @@
//get variables used to control the order
$order_by = $_GET["order_by"] ?? '';
$order = $_GET["order"] ?? '';
$sort = $order_by == 'conference_extension' ? 'natural' : null;
//add the search term
$search = strtolower($_GET["search"] ?? '');
@@ -134,7 +135,7 @@
//get the list
$sql = str_replace('count(*)', '*', $sql);
$sql .= order_by($order_by, $order);
$sql .= order_by($order_by, $order, null, null, $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$conferences = $database->select($sql, $parameters ?? null, 'all');
+51 -2
View File
@@ -6,6 +6,7 @@ $text['title-active_conferences']['ar-eg'] = "المؤتمرات النشطة";
$text['title-active_conferences']['de-at'] = "Aktive Konferenzen";
$text['title-active_conferences']['de-ch'] = "Aktive Konferenzen";
$text['title-active_conferences']['de-de'] = "Aktive Konferenzen";
$text['title-active_conferences']['el-gr'] = "Ενεργά Συνέδρια";
$text['title-active_conferences']['es-cl'] = "Conferencias Activas";
$text['title-active_conferences']['es-mx'] = "Conferencias Activas";
$text['title-active_conferences']['fr-ca'] = "Conférences Avtives";
@@ -30,6 +31,7 @@ $text['message-denied']['ar-eg'] = "تم الرفض";
$text['message-denied']['de-at'] = "Zugang verweigert";
$text['message-denied']['de-ch'] = "Zugang verweigert";
$text['message-denied']['de-de'] = "Zugang verweigert";
$text['message-denied']['el-gr'] = "Δεν επιτρέπεται η πρόσβαση";
$text['message-denied']['es-cl'] = "acceso denegado";
$text['message-denied']['es-mx'] = "acceso denegado";
$text['message-denied']['fr-ca'] = "Accès non authorisé";
@@ -54,6 +56,7 @@ $text['message-connection']['ar-eg'] = "فشل الاتصال بـ Event Socket.
$text['message-connection']['de-at'] = "Verbindung zum Event Socket fehlgeschlagen.";
$text['message-connection']['de-ch'] = "Verbindung zum Event Socket fehlgeschlagen.";
$text['message-connection']['de-de'] = "Verbindung zum Event Socket fehlgeschlagen.";
$text['message-connection']['el-gr'] = "Η σύνδεση στο Event Socket απέτυχε.";
$text['message-connection']['es-cl'] = "Conexión a Socket de Evento fallida.";
$text['message-connection']['es-mx'] = "Conexión a Socket de Evento fallida.";
$text['message-connection']['fr-ca'] = "Connexion à l'Event Socket en echec.";
@@ -78,6 +81,7 @@ $text['message-click_to_unmute']['ar-eg'] = "انقر لإلغاء كتم صوت
$text['message-click_to_unmute']['de-at'] = "Klicken Sie hier um die Stummschaltung zu deaktivieren";
$text['message-click_to_unmute']['de-ch'] = "Klicken Sie hier um die Stummschaltung zu deaktivieren";
$text['message-click_to_unmute']['de-de'] = "Klicken Sie hier um die Stummschaltung zu deaktivieren";
$text['message-click_to_unmute']['el-gr'] = "Κάντε κλικ για κατάργηση σίγασης μέλους";
$text['message-click_to_unmute']['es-cl'] = "Haga clic para desactivar el silencio miembro";
$text['message-click_to_unmute']['es-mx'] = "Haga clic para desactivar el silencio miembro";
$text['message-click_to_unmute']['fr-ca'] = "Cliquez pour Réactiver membres";
@@ -102,6 +106,7 @@ $text['message-click_to_mute']['ar-eg'] = "انقر لكتم صوت العضو";
$text['message-click_to_mute']['de-at'] = "Klicken Sie hier um den Teilnehmer stumm zu schalten";
$text['message-click_to_mute']['de-ch'] = "Klicken Sie hier um den Teilnehmer stumm zu schalten";
$text['message-click_to_mute']['de-de'] = "Klicken Sie hier um den Teilnehmer stumm zu schalten";
$text['message-click_to_mute']['el-gr'] = "Κάντε κλικ για σίγαση μέλους";
$text['message-click_to_mute']['es-cl'] = "Haga clic en silencio miembro";
$text['message-click_to_mute']['es-mx'] = "Haga clic en silencio miembro";
$text['message-click_to_mute']['fr-ca'] = "Cliquez sur muet Membres";
@@ -126,6 +131,7 @@ $text['label-conference_center_room']['ar-eg'] = "غرفة مركز المؤتم
$text['label-conference_center_room']['de-at'] = "Konferenz Zentrale";
$text['label-conference_center_room']['de-ch'] = "Konferenz Zentrale";
$text['label-conference_center_room']['de-de'] = "Konferenz Zentrale";
$text['label-conference_center_room']['el-gr'] = "Αίθουσα Συνεδριακού Κέντρου";
$text['label-conference_center_room']['es-cl'] = "Centro de Conferencia";
$text['label-conference_center_room']['es-mx'] = "Centro de Conferencia";
$text['label-conference_center_room']['fr-ca'] = "Centre de conférence";
@@ -150,6 +156,7 @@ $text['label-yes']['ar-eg'] = "نعم";
$text['label-yes']['de-at'] = "Ja";
$text['label-yes']['de-ch'] = "Ja";
$text['label-yes']['de-de'] = "Ja";
$text['label-yes']['el-gr'] = "Ναί";
$text['label-yes']['es-cl'] = "Si";
$text['label-yes']['es-mx'] = "Si";
$text['label-yes']['fr-ca'] = "Oui";
@@ -174,6 +181,7 @@ $text['label-volume']['ar-eg'] = "مقدار";
$text['label-volume']['de-at'] = "Lautstärke";
$text['label-volume']['de-ch'] = "Lautstärke";
$text['label-volume']['de-de'] = "Lautstärke";
$text['label-volume']['el-gr'] = "Ενταση ΗΧΟΥ";
$text['label-volume']['es-cl'] = "Volumen";
$text['label-volume']['es-mx'] = "Volumen";
$text['label-volume']['fr-ca'] = "Volume";
@@ -198,6 +206,7 @@ $text['label-video']['ar-eg'] = "فيديو";
$text['label-video']['de-at'] = "Video";
$text['label-video']['de-ch'] = "Video";
$text['label-video']['de-de'] = "Video";
$text['label-video']['el-gr'] = "βίντεο";
$text['label-video']['es-cl'] = "Video";
$text['label-video']['es-mx'] = "Video";
$text['label-video']['fr-ca'] = "Vidéo";
@@ -222,6 +231,7 @@ $text['label-unmute-all']['ar-eg'] = "إعادة صوت الكل";
$text['label-unmute-all']['de-at'] = "Stummschaltung deaktivieren, alle";
$text['label-unmute-all']['de-ch'] = "Stummschaltung deaktivieren, alle";
$text['label-unmute-all']['de-de'] = "Stummschaltung deaktivieren, alle";
$text['label-unmute-all']['el-gr'] = "Κατάργηση σίγασης όλων";
$text['label-unmute-all']['es-cl'] = "Desilenciar a todos";
$text['label-unmute-all']['es-mx'] = "Desilenciar a todos";
$text['label-unmute-all']['fr-ca'] = "tous sonore";
@@ -246,6 +256,7 @@ $text['label-unmute']['ar-eg'] = "سحاب";
$text['label-unmute']['de-at'] = "Stummschaltung deaktivieren";
$text['label-unmute']['de-ch'] = "Stummschaltung deaktivieren";
$text['label-unmute']['de-de'] = "Stummschaltung deaktivieren";
$text['label-unmute']['el-gr'] = "μη σιγασμένα";
$text['label-unmute']['es-cl'] = "Desilenciar";
$text['label-unmute']['es-mx'] = "Desilenciar";
$text['label-unmute']['fr-ca'] = "sonore";
@@ -270,6 +281,7 @@ $text['label-unlock']['ar-eg'] = "الغاء القفل";
$text['label-unlock']['de-at'] = "Entsperren";
$text['label-unlock']['de-ch'] = "Entsperren";
$text['label-unlock']['de-de'] = "Entsperren";
$text['label-unlock']['el-gr'] = "Ξεκλείδωμα";
$text['label-unlock']['es-cl'] = "Desbloquear";
$text['label-unlock']['es-mx'] = "Desbloquear";
$text['label-unlock']['fr-ca'] = "Débloqué";
@@ -294,6 +306,7 @@ $text['label-undeaf']['ar-eg'] = "غير مصمّم";
$text['label-undeaf']['de-at'] = "Hörbarkeit";
$text['label-undeaf']['de-ch'] = "Hörbarkeit";
$text['label-undeaf']['de-de'] = "Hörbarkeit";
$text['label-undeaf']['el-gr'] = "Άκουφοι";
$text['label-undeaf']['es-cl'] = "Deshacer Sordo";
$text['label-undeaf']['es-mx'] = "Deshacer Sordo";
$text['label-undeaf']['fr-ca'] = "entandant";
@@ -318,6 +331,7 @@ $text['label-tools']['ar-eg'] = "أدوات";
$text['label-tools']['de-at'] = "Werkzeuge";
$text['label-tools']['de-ch'] = "Werkzeuge";
$text['label-tools']['de-de'] = "Werkzeuge";
$text['label-tools']['el-gr'] = "Εργαλεία";
$text['label-tools']['es-cl'] = "Herramientas";
$text['label-tools']['es-mx'] = "Herramientas";
$text['label-tools']['fr-ca'] = "Outils";
@@ -342,6 +356,7 @@ $text['label-tool']['ar-eg'] = "أدوات";
$text['label-tool']['de-at'] = "Werkzeug";
$text['label-tool']['de-ch'] = "Werkzeug";
$text['label-tool']['de-de'] = "Werkzeug";
$text['label-tool']['el-gr'] = "Εργαλεία";
$text['label-tool']['es-cl'] = "Herramientas";
$text['label-tool']['es-mx'] = "Herramientas";
$text['label-tool']['fr-ca'] = "Outils";
@@ -366,6 +381,7 @@ $text['label-talking']['ar-eg'] = "تتحدث";
$text['label-talking']['de-at'] = "spricht";
$text['label-talking']['de-ch'] = "spricht";
$text['label-talking']['de-de'] = "spricht";
$text['label-talking']['el-gr'] = "Ομιλία";
$text['label-talking']['es-cl'] = "Hablando";
$text['label-talking']['es-mx'] = "Hablando";
$text['label-talking']['fr-ca'] = "Parlant";
@@ -390,6 +406,7 @@ $text['label-speak']['ar-eg'] = "يتكلم";
$text['label-speak']['de-at'] = "sprechen";
$text['label-speak']['de-ch'] = "sprechen";
$text['label-speak']['de-de'] = "sprechen";
$text['label-speak']['el-gr'] = "Μιλώ";
$text['label-speak']['es-cl'] = "Hablar";
$text['label-speak']['es-mx'] = "Hablar";
$text['label-speak']['fr-ca'] = "Parler";
@@ -414,6 +431,7 @@ $text['label-recording']['ar-eg'] = "تسجيل";
$text['label-recording']['de-at'] = "Aufnahme";
$text['label-recording']['de-ch'] = "Aufnahme";
$text['label-recording']['de-de'] = "Aufnahme";
$text['label-recording']['el-gr'] = "Εγγραφή";
$text['label-recording']['es-cl'] = "Grabando";
$text['label-recording']['es-mx'] = "Grabando";
$text['label-recording']['fr-ca'] = "Enregistré";
@@ -438,6 +456,7 @@ $text['label-quiet']['ar-eg'] = "هادئ";
$text['label-quiet']['de-at'] = "Leise";
$text['label-quiet']['de-ch'] = "Leise";
$text['label-quiet']['de-de'] = "Leise";
$text['label-quiet']['el-gr'] = "Ησυχια";
$text['label-quiet']['es-cl'] = "Tranquilo";
$text['label-quiet']['es-mx'] = "Tranquilo";
$text['label-quiet']['fr-ca'] = "Silencieux";
@@ -462,6 +481,7 @@ $text['label-participant-pin']['ar-eg'] = "رقم التعريف الشخصي ل
$text['label-participant-pin']['de-at'] = "Teilnehmer PIN";
$text['label-participant-pin']['de-ch'] = "Teilnehmer PIN";
$text['label-participant-pin']['de-de'] = "Teilnehmer PIN";
$text['label-participant-pin']['el-gr'] = "PIN συμμετέχοντος";
$text['label-participant-pin']['es-cl'] = "Participante PIN";
$text['label-participant-pin']['es-mx'] = "Participante PIN";
$text['label-participant-pin']['fr-ca'] = "Code Participant";
@@ -474,7 +494,7 @@ $text['label-participant-pin']['pt-br'] = "Participante";
$text['label-participant-pin']['pt-pt'] = "Participante PIN";
$text['label-participant-pin']['ro-ro'] = "PIN participant";
$text['label-participant-pin']['ru-ru'] = "PIN участника";
$text['label-participant-pin']['sv-se'] = "PIN Deltagare";
$text['label-participant-pin']['sv-se'] = "Pinkod Deltagare";
$text['label-participant-pin']['uk-ua'] = "PIN учасника";
$text['label-participant-pin']['zh-cn'] = "参与者密码";
$text['label-participant-pin']['ja-jp'] = "参加者暗証番号";
@@ -486,6 +506,7 @@ $text['label-participant']['ar-eg'] = "مشارك";
$text['label-participant']['de-at'] = "Teilnehmer";
$text['label-participant']['de-ch'] = "Teilnehmer";
$text['label-participant']['de-de'] = "Teilnehmer";
$text['label-participant']['el-gr'] = "Συμμέτοχος";
$text['label-participant']['es-cl'] = "Participante";
$text['label-participant']['es-mx'] = "Participante";
$text['label-participant']['fr-ca'] = "Participant";
@@ -510,6 +531,7 @@ $text['label-not-recording']['ar-eg'] = "لا تسجل";
$text['label-not-recording']['de-at'] = "Nicht Aufnehmen";
$text['label-not-recording']['de-ch'] = "Nicht Aufnehmen";
$text['label-not-recording']['de-de'] = "Nicht Aufnehmen";
$text['label-not-recording']['el-gr'] = "Δεν γίνεται ηχογράφηση";
$text['label-not-recording']['es-cl'] = "Sin grabar";
$text['label-not-recording']['es-mx'] = "Sin grabar";
$text['label-not-recording']['fr-ca'] = "Non Enregistré";
@@ -534,6 +556,7 @@ $text['label-no']['ar-eg'] = "لا";
$text['label-no']['de-at'] = "Nein";
$text['label-no']['de-ch'] = "Nein";
$text['label-no']['de-de'] = "Nein";
$text['label-no']['el-gr'] = "Οχι";
$text['label-no']['es-cl'] = "No";
$text['label-no']['es-mx'] = "No";
$text['label-no']['fr-ca'] = "Non";
@@ -558,6 +581,7 @@ $text['label-mute-all-alt']['ar-eg'] = "كتم صوت جميع المشاركي
$text['label-mute-all-alt']['de-at'] = "Alle Teilnehmer stumm schalten.";
$text['label-mute-all-alt']['de-ch'] = "Alle Teilnehmer stumm schalten.";
$text['label-mute-all-alt']['de-de'] = "Alle Teilnehmer stumm schalten.";
$text['label-mute-all-alt']['el-gr'] = "Σίγαση όλων των Συμμετεχόντων.";
$text['label-mute-all-alt']['es-cl'] = "Silenciar a todos excepto al moderador.";
$text['label-mute-all-alt']['es-mx'] = "Silenciar a todos excepto al moderador.";
$text['label-mute-all-alt']['fr-ca'] = "muets sauf le moderateur.";
@@ -582,6 +606,7 @@ $text['label-mute-all']['ar-eg'] = "كتم الكل";
$text['label-mute-all']['de-at'] = "Alle stummschalten";
$text['label-mute-all']['de-ch'] = "Alle stummschalten";
$text['label-mute-all']['de-de'] = "Alle stummschalten";
$text['label-mute-all']['el-gr'] = "Σίγαση όλων";
$text['label-mute-all']['es-cl'] = "Silenciar a todos";
$text['label-mute-all']['es-mx'] = "Silenciar a todos";
$text['label-mute-all']['fr-ca'] = "tous muets";
@@ -606,6 +631,7 @@ $text['label-mute']['ar-eg'] = "صامت";
$text['label-mute']['de-at'] = "Stummschalten";
$text['label-mute']['de-ch'] = "Stummschalten";
$text['label-mute']['de-de'] = "Stummschalten";
$text['label-mute']['el-gr'] = "Βουβός";
$text['label-mute']['es-cl'] = "Silenciar";
$text['label-mute']['es-mx'] = "Silenciar";
$text['label-mute']['fr-ca'] = "muet";
@@ -630,6 +656,7 @@ $text['label-hand_raised']['ar-eg'] = "اليد مرفوعة";
$text['label-hand_raised']['de-at'] = "Hand erhoben";
$text['label-hand_raised']['de-ch'] = "Hand erhoben";
$text['label-hand_raised']['de-de'] = "Hand erhoben";
$text['label-hand_raised']['el-gr'] = "Σηκωμένο το χέρι";
$text['label-hand_raised']['es-cl'] = "mano levantada";
$text['label-hand_raised']['es-mx'] = "mano levantada";
$text['label-hand_raised']['fr-ca'] = "Levé à la main";
@@ -654,6 +681,7 @@ $text['label-moderator']['ar-eg'] = "الوسيط";
$text['label-moderator']['de-at'] = "Moderator";
$text['label-moderator']['de-ch'] = "Moderator";
$text['label-moderator']['de-de'] = "Moderator";
$text['label-moderator']['el-gr'] = "Μεσολαβητής";
$text['label-moderator']['es-cl'] = "Moderador";
$text['label-moderator']['es-mx'] = "Moderador";
$text['label-moderator']['fr-ca'] = "Modérateur";
@@ -678,6 +706,7 @@ $text['label-message']['ar-eg'] = "رسالة";
$text['label-message']['de-at'] = "Nachricht";
$text['label-message']['de-ch'] = "Nachricht";
$text['label-message']['de-de'] = "Nachricht";
$text['label-message']['el-gr'] = "Μήνυμα";
$text['label-message']['es-cl'] = "Mensaje";
$text['label-message']['es-mx'] = "Mensaje";
$text['label-message']['fr-ca'] = "Message";
@@ -702,6 +731,7 @@ $text['label-members']['ar-eg'] = "أعضاء";
$text['label-members']['de-at'] = "Teilnehmer";
$text['label-members']['de-ch'] = "Teilnehmer";
$text['label-members']['de-de'] = "Teilnehmer";
$text['label-members']['el-gr'] = "Μέλη";
$text['label-members']['es-cl'] = "Miembros";
$text['label-members']['es-mx'] = "Miembros";
$text['label-members']['fr-ca'] = "Membres";
@@ -726,6 +756,7 @@ $text['label-member-count']['ar-eg'] = "عدد الأعضاء";
$text['label-member-count']['de-at'] = "Anzahl Teilnehmer";
$text['label-member-count']['de-ch'] = "Anzahl Teilnehmer";
$text['label-member-count']['de-de'] = "Anzahl Teilnehmer";
$text['label-member-count']['el-gr'] = "Πλήθος μελών";
$text['label-member-count']['es-cl'] = "Conteo de Miembros";
$text['label-member-count']['es-mx'] = "Conteo de Miembros";
$text['label-member-count']['fr-ca'] = "Décompte des participants";
@@ -750,6 +781,7 @@ $text['label-lock']['ar-eg'] = "قفل";
$text['label-lock']['de-at'] = "Sperren";
$text['label-lock']['de-ch'] = "Sperren";
$text['label-lock']['de-de'] = "Sperren";
$text['label-lock']['el-gr'] = "Κλειδαριά";
$text['label-lock']['es-cl'] = "Bloquear";
$text['label-lock']['es-mx'] = "Bloquear";
$text['label-lock']['fr-ca'] = "Bloqué";
@@ -774,6 +806,7 @@ $text['label-kick']['ar-eg'] = "ركلة";
$text['label-kick']['de-at'] = "Rauswerfen";
$text['label-kick']['de-ch'] = "Rauswerfen";
$text['label-kick']['de-de'] = "Rauswerfen";
$text['label-kick']['el-gr'] = "Λάκτισμα";
$text['label-kick']['es-cl'] = "Echar";
$text['label-kick']['es-mx'] = "Echar";
$text['label-kick']['fr-ca'] = "jeter";
@@ -798,6 +831,7 @@ $text['label-joined']['ar-eg'] = "انضم";
$text['label-joined']['de-at'] = "Verbunden";
$text['label-joined']['de-ch'] = "Verbunden";
$text['label-joined']['de-de'] = "Verbunden";
$text['label-joined']['el-gr'] = "Εντάχθηκαν";
$text['label-joined']['es-cl'] = "Unido";
$text['label-joined']['es-mx'] = "Unido";
$text['label-joined']['fr-ca'] = "a joint";
@@ -822,6 +856,7 @@ $text['label-interactive']['ar-eg'] = "مؤتمر تفاعلي";
$text['label-interactive']['de-at'] = "Inaktive Konferenz";
$text['label-interactive']['de-ch'] = "Inaktive Konferenz";
$text['label-interactive']['de-de'] = "Inaktive Konferenz";
$text['label-interactive']['el-gr'] = "Διαδραστική Διάσκεψη";
$text['label-interactive']['es-cl'] = "Conferencia Interactiva";
$text['label-interactive']['es-mx'] = "Conferencia Interactiva";
$text['label-interactive']['fr-ca'] = "Conférence Interactive";
@@ -846,6 +881,7 @@ $text['label-id']['ar-eg'] = "ID";
$text['label-id']['de-at'] = "ID";
$text['label-id']['de-ch'] = "ID";
$text['label-id']['de-de'] = "ID";
$text['label-id']['el-gr'] = "ID";
$text['label-id']['es-cl'] = "ID";
$text['label-id']['es-mx'] = "ID";
$text['label-id']['fr-ca'] = "ID";
@@ -870,6 +906,7 @@ $text['label-hear']['ar-eg'] = "يسمع";
$text['label-hear']['de-at'] = "hören";
$text['label-hear']['de-ch'] = "hören";
$text['label-hear']['de-de'] = "hören";
$text['label-hear']['el-gr'] = "Ακούω";
$text['label-hear']['es-cl'] = "Escuchar";
$text['label-hear']['es-mx'] = "Escuchar";
$text['label-hear']['fr-ca'] = "écouter";
@@ -894,6 +931,7 @@ $text['label-gain']['ar-eg'] = "يكسب";
$text['label-gain']['de-at'] = "Verstärkung";
$text['label-gain']['de-ch'] = "Verstärkung";
$text['label-gain']['de-de'] = "Verstärkung";
$text['label-gain']['el-gr'] = "Κέρδος";
$text['label-gain']['es-cl'] = "Ganancia";
$text['label-gain']['es-mx'] = "Ganancia";
$text['label-gain']['fr-ca'] = "Gain";
@@ -918,6 +956,7 @@ $text['label-floor']['ar-eg'] = "لها طابق";
$text['label-floor']['de-at'] = "Hat das Wort";
$text['label-floor']['de-ch'] = "Hat das Wort";
$text['label-floor']['de-de'] = "Hat das Wort";
$text['label-floor']['el-gr'] = "Διαθέτει δάπεδο";
$text['label-floor']['es-cl'] = "Tiene Piso";
$text['label-floor']['es-mx'] = "Tiene Piso";
$text['label-floor']['fr-ca'] = "A la parole";
@@ -942,6 +981,7 @@ $text['label-energy']['ar-eg'] = "طاقة";
$text['label-energy']['de-at'] = "Energie";
$text['label-energy']['de-ch'] = "Energie";
$text['label-energy']['de-de'] = "Energie";
$text['label-energy']['el-gr'] = "Ενέργεια";
$text['label-energy']['es-cl'] = "Energía";
$text['label-energy']['es-mx'] = "Energía";
$text['label-energy']['fr-ca'] = "Energie";
@@ -966,6 +1006,7 @@ $text['label-end-conference']['ar-eg'] = "نهاية المؤتمر";
$text['label-end-conference']['de-at'] = "Konferenz beenden";
$text['label-end-conference']['de-ch'] = "Konferenz beenden";
$text['label-end-conference']['de-de'] = "Konferenz beenden";
$text['label-end-conference']['el-gr'] = "Τέλος Συνεδρίου";
$text['label-end-conference']['es-cl'] = "Terminar Conferencia";
$text['label-end-conference']['es-mx'] = "Terminar Conferencia";
$text['label-end-conference']['fr-ca'] = "finir la conférence";
@@ -990,6 +1031,7 @@ $text['label-deaf']['ar-eg'] = "أصم";
$text['label-deaf']['de-at'] = "Taub";
$text['label-deaf']['de-ch'] = "Taub";
$text['label-deaf']['de-de'] = "Taub";
$text['label-deaf']['el-gr'] = "Κουφός";
$text['label-deaf']['es-cl'] = "Sordo";
$text['label-deaf']['es-mx'] = "Sordo";
$text['label-deaf']['fr-ca'] = "sourd";
@@ -1014,6 +1056,7 @@ $text['label-cid-num']['ar-eg'] = "رقم CID";
$text['label-cid-num']['de-at'] = "Anrufer Nummer";
$text['label-cid-num']['de-ch'] = "Anrufer Nummer";
$text['label-cid-num']['de-de'] = "Anrufer Nummer";
$text['label-cid-num']['el-gr'] = "Αριθμός CID";
$text['label-cid-num']['es-cl'] = "Número de Caller ID";
$text['label-cid-num']['es-mx'] = "Número de Caller ID";
$text['label-cid-num']['fr-ca'] = "Numéro d'appelant";
@@ -1038,6 +1081,7 @@ $text['label-cid-name']['ar-eg'] = "اسم CID";
$text['label-cid-name']['de-at'] = "Anrufer Name";
$text['label-cid-name']['de-ch'] = "Anrufer Name";
$text['label-cid-name']['de-de'] = "Anrufer Name";
$text['label-cid-name']['el-gr'] = "Όνομα CID";
$text['label-cid-name']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name']['es-mx'] = "Nombre de Caller ID";
$text['label-cid-name']['fr-ca'] = "Nom d'appelant";
@@ -1062,6 +1106,7 @@ $text['label-capabilities']['ar-eg'] = "قدرات";
$text['label-capabilities']['de-at'] = "Möglichkeiten";
$text['label-capabilities']['de-ch'] = "Möglichkeiten";
$text['label-capabilities']['de-de'] = "Möglichkeiten";
$text['label-capabilities']['el-gr'] = "Δυνατότητες";
$text['label-capabilities']['es-cl'] = "Capacidades";
$text['label-capabilities']['es-mx'] = "Capacidades";
$text['label-capabilities']['fr-ca'] = "Capacités";
@@ -1086,6 +1131,7 @@ $text['description-interactive']['ar-eg'] = "استخدم هذا لمراقبة
$text['description-interactive']['de-at'] = "Teilnehmer der Konferenz überwachen und aktiv eingreifen.";
$text['description-interactive']['de-ch'] = "Teilnehmer der Konferenz überwachen und aktiv eingreifen.";
$text['description-interactive']['de-de'] = "Teilnehmer der Konferenz überwachen und aktiv eingreifen.";
$text['description-interactive']['el-gr'] = "Χρησιμοποιήστε το για να παρακολουθείτε και να αλληλεπιδράτε με τα μέλη του συνεδρίου.";
$text['description-interactive']['es-cl'] = "Utilice esta herramienta para monitorear e interactuar con los miembros de las conferencia.";
$text['description-interactive']['es-mx'] = "Utilice esta herramienta para monitorear e interactuar con los miembros de las conferencia.";
$text['description-interactive']['fr-ca'] = "Superviser et interagir avec les participants de la conférence";
@@ -1110,6 +1156,7 @@ $text['description-active']['ar-eg'] = "قم بإدراج كافة المؤتم
$text['description-active']['de-at'] = "Liste alle aktiven Konferenzen mit einem oder mehreren Teilnehmern.";
$text['description-active']['de-ch'] = "Liste alle aktiven Konferenzen mit einem oder mehreren Teilnehmern.";
$text['description-active']['de-de'] = "Liste alle aktiven Konferenzen mit einem oder mehreren Teilnehmern.";
$text['description-active']['el-gr'] = "Καταχωρίστε όλα τα συνέδρια που είναι ενεργά αυτήν τη στιγμή με ένα ή περισσότερα μέλη.";
$text['description-active']['es-cl'] = "Listar todas las conferencia que tienen uno o más miembros activos.";
$text['description-active']['es-mx'] = "Listar todas las conferencia que tienen uno o más miembros activos.";
$text['description-active']['fr-ca'] = "Liste toutes les conférences actives avec un ou plusieurs participants.";
@@ -1122,7 +1169,7 @@ $text['description-active']['pt-br'] = "Lista com todas as conferência que est
$text['description-active']['pt-pt'] = "Listar todas as conferências que estão actualmente activas com um ou mais membros.";
$text['description-active']['ro-ro'] = "Listați toate conferințele care sunt active în prezent cu unul sau mai mulți membri.";
$text['description-active']['ru-ru'] = "Список всех активных конференций с по крайней мере одним участником.";
$text['description-active']['sv-se'] = "Lista alla Konferenser som är aktiva med en eller fler deltagare";
$text['description-active']['sv-se'] = "Lista alla konferenser som för närvarande är aktiva med en eller flera medlemmar.";
$text['description-active']['uk-ua'] = "Перелічіть усі активні конференції з одним або кількома учасниками.";
$text['description-active']['zh-cn'] = "列出当前有一名或多名成员参加的所有会议。";
$text['description-active']['ja-jp'] = "1 人以上のメンバーと現在アクティブなすべての会議を一覧表示します。";
@@ -1134,6 +1181,7 @@ $text['button-stop-rec']['ar-eg'] = "إيقاف التسجيل";
$text['button-stop-rec']['de-at'] = "Aufnahme beenden";
$text['button-stop-rec']['de-ch'] = "Aufnahme beenden";
$text['button-stop-rec']['de-de'] = "Aufnahme beenden";
$text['button-stop-rec']['el-gr'] = "Διακοπή εγγραφής";
$text['button-stop-rec']['es-cl'] = "Detener Grabación";
$text['button-stop-rec']['es-mx'] = "Detener Grabación";
$text['button-stop-rec']['fr-ca'] = "Arrêter l'Enregistrement";
@@ -1158,6 +1206,7 @@ $text['button-start-rec']['ar-eg'] = "بدء التسجيل";
$text['button-start-rec']['de-at'] = "Aufnahme starten";
$text['button-start-rec']['de-ch'] = "Aufnahme starten";
$text['button-start-rec']['de-de'] = "Aufnahme starten";
$text['button-start-rec']['el-gr'] = "Έναρξη εγγραφής";
$text['button-start-rec']['es-cl'] = "Iniciar Grabación";
$text['button-start-rec']['es-mx'] = "Iniciar Grabación";
$text['button-start-rec']['fr-ca'] = "Commencer l'Enregistrement";
+22 -22
View File
@@ -147,9 +147,9 @@
}
//define an alternative kick all
function conference_end($fp, $name) {
function conference_end($name) {
$switch_cmd = "conference '".$name."' xml_list";
$xml_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$xml_str = trim(event_socket::api($switch_cmd));
try {
$xml = new SimpleXMLElement($xml_str);
}
@@ -161,7 +161,7 @@
foreach ($xml->conference->members->member as $row) {
$uuid = (string)$row->uuid;
if (is_uuid($uuid)) {
$switch_result = event_socket_request($fp, 'api uuid_kill '.$uuid);
$switch_result = event_socket::api("uuid_kill $uuid");
}
if ($x < 1) {
usleep(500000); //500000 = 0.5 seconds
@@ -188,66 +188,66 @@
}
//connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$esl = event_socket::create();
if ($esl->is_connected()) {
if ($data == "energy") {
//conference 3001-example-domain.org energy 103
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
$result_array = explode("=",$switch_result);
$tmp_value = $result_array[1];
if ($direction == "up") { $tmp_value = $tmp_value + 100; }
if ($direction == "down") { $tmp_value = $tmp_value - 100; }
//echo "energy $tmp_value<br />\n";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value);
$switch_result = event_socket::api("$switch_cmd $tmp_value");
}
elseif ($data == "volume_in") {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
$result_array = explode("=",$switch_result);
$tmp_value = $result_array[1];
if ($direction == "up") { $tmp_value = $tmp_value + 1; }
if ($direction == "down") { $tmp_value = $tmp_value - 1; }
//echo "volume $tmp_value<br />\n";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value);
$switch_result = event_socket::api($switch_cmd.' '.$tmp_value);
}
elseif ($data == "volume_out") {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
$result_array = explode("=",$switch_result);
$tmp_value = $result_array[1];
if ($direction == "up") { $tmp_value = $tmp_value + 1; }
if ($direction == "down") { $tmp_value = $tmp_value - 1; }
//echo "volume $tmp_value<br />\n";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value);
$switch_result = event_socket::api($switch_cmd.' '.$tmp_value);
}
elseif ($data == "record") {
$recording_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.date("Y").'/'.date("M").'/'.date("d");
$switch_cmd .= $recording_dir."/".$uuid.".wav";
if (!file_exists($recording_dir."/".$uuid.".wav")) {
$switch_result = event_socket_request($fp, "api ".$switch_cmd);
$switch_cmd .= $recording_dir."/{$uuid}.wav";
if (!file_exists($switch_cmd)) {
$switch_result = event_socket::api($switch_cmd);
}
}
elseif ($data == "norecord") {
//stop recording and rename the file
$recording_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.date("Y").'/'.date("M").'/'.date("d");
$switch_cmd .= $recording_dir."/".$uuid.".wav";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
elseif ($data == "kick") {
$switch_result = event_socket_request($fp, 'api uuid_kill '.$uuid);
$switch_result = event_socket::api("uuid_kill $uuid");
}
elseif ($data == "kick all") {
//$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
conference_end($fp, $name);
//$switch_result = event_socket::api($switch_cmd);
conference_end($name);
}
elseif ($data == "mute" || $data == "unmute" || $data == "mute non_moderator" || $data == "unmute non_moderator") {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
$switch_cmd = "uuid_setvar ".$uuid. " hand_raised false";
event_socket_request($fp, 'api '.$switch_cmd);
event_socket::api($switch_cmd);
}
elseif ($data == "deaf" || $data == "undeaf" ) {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
elseif ($data == "lock" || $data == "unlock" ) {
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$switch_result = event_socket::api($switch_cmd);
}
//echo "command: ".$switch_cmd." result: ".$switch_result."<br\n>";
}
@@ -61,8 +61,8 @@
$switch_cmd = "conference '".$conference_name."' xml_list";
//connect to event socket, send the command and process the results
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
$esl = event_socket::create();
if (!$esl->is_connected()) {
$msg = "<div align='center'>".$text['message-connection']."<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -77,7 +77,7 @@
}
else {
//show the content
$xml_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$xml_str = trim(event_socket::api($switch_cmd));
if (substr($xml_str, -9) == "not found") {
$valid_xml = false;
}
@@ -188,7 +188,7 @@
$caller_id_name = urldecode($caller_id_name);
$caller_id_number = $row->caller_id_number;
$switch_cmd = "uuid_getvar ".$uuid. " hand_raised";
$hand_raised = (trim(event_socket_request($fp, 'api '.$switch_cmd)) == "true") ? "true" : "false";
$hand_raised = (trim(event_socket::api($switch_cmd)) == "true") ? "true" : "false";
//format secondsfloor(floor($fifo_duration / 60) % 60)
$join_time_formatted = sprintf('%02d:%02d:%02d', floor($join_time / 3600), floor(floor($join_time / 60) % 60), $join_time % 60);
$last_talking_formatted = sprintf('%02d:%02d:%02d', floor($last_talking / 3600), floor(floor($last_talking / 60) % 60), $last_talking % 60);
@@ -43,8 +43,8 @@
$text = $language->get();
//show content
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
$fp = event_socket::create();
if (!$fp->is_connected()) {
$msg = "<div align='center'>".$text['message-connection']."<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
@@ -58,7 +58,7 @@
echo "</div>\n";
}
else {
$xml_string = trim(event_socket_request($fp, 'api conference xml_list'));
$xml_string = trim(event_socket::api('conference xml_list'));
try {
$xml = new SimpleXMLElement($xml_string);
}
-24
View File
@@ -240,13 +240,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_contacts";
$apps[$x]['db'][$y]['table']['parent'] = "";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "contact_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
@@ -263,11 +256,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_parent_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
@@ -582,13 +570,6 @@
$apps[$x]['db'][$y]['table']['name'] = "v_contact_notes";
$apps[$x]['db'][$y]['table']['parent'] = "v_contacts";
$z=0;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "contacts_note_id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_note_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
@@ -605,11 +586,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Contact ID";
+33 -60
View File
@@ -1,12 +1,15 @@
<?php
if ($domains_processed == 1) {
if ($domains_processed == 1) {
//populate new phone_label values, phone_type_* values
//create one instance of the database
$database = new database;
//populate new phone_label values, phone_type_* values
$obj = new schema;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contact_phones', 'phone_type'); //check if field exists
$field_exists = $obj->column_exists($db_name, 'v_contact_phones', 'phone_type'); //check if field exists
if ($field_exists) {
//add multi-lingual support
$language = new text;
@@ -20,59 +23,48 @@ if ($domains_processed == 1) {
$sql .= "or phone_type = 'voicemail' ";
$sql .= "or phone_type = 'cell' ";
$sql .= "or phone_type = 'pcs' ";
$database = new database;
$database->execute($sql);
unset($sql);
$sql = "update v_contact_phones set phone_type_fax = '1' where phone_type = 'fax'";
$database = new database;
$database->execute($sql);
unset($sql);
$sql = "update v_contact_phones set phone_type_video = '1' where phone_type = 'video'";
$database = new database;
$database->execute($sql);
unset($sql);
$sql = "update v_contact_phones set phone_type_text = '1' where phone_type = 'cell' or phone_type = 'pager'";
$database = new database;
$database->execute($sql);
unset($sql);
// migrate phone_type values to phone_label, correct case and make multilingual where appropriate
$default_phone_types = array('home','work','pref','voice','fax','msg','cell','pager','modem','car','isdn','video','pcs');
$default_phone_labels = array($text['option-home'],$text['option-work'],'Pref','Voice',$text['option-fax'],$text['option-voicemail'],$text['option-mobile'],$text['option-pager'],'Modem','Car','ISDN','Video','PCS');
$default_phone_types = array('home', 'work', 'pref', 'voice', 'fax', 'msg', 'cell', 'pager', 'modem', 'car', 'isdn', 'video', 'pcs');
$default_phone_labels = array($text['option-home'],$text['option-work'], 'Pref', 'Voice', $text['option-fax'], $text['option-voicemail'], $text['option-mobile'], $text['option-pager'], 'Modem', 'Car', 'ISDN', 'Video', 'PCS');
foreach ($default_phone_types as $index => $old) {
$sql = "update v_contact_phones set phone_label = :phone_label where phone_type = :phone_type ";
$parameters['phone_label'] = $default_phone_labels[$index]; //new
$parameters['phone_type'] = $old;
$database = new database;
$database->execute($sql, $parameters);
unset($sql, $parameters);
}
// empty phone_type field to prevent confusion in the future
$sql = "update v_contact_phones set phone_type is null";
$database = new database;
$database->execute($sql);
unset($sql);
}
unset($obj);
//populate primary email from deprecated field in v_contact table
$obj = new schema;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_email'); //check if field exists
//populate primary email from deprecated field in v_contact table
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_email'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_email is not null and contact_email != '' ";
$database = new database;
$result = $database->select($sql);
unset($sql);
if (is_array($result) && @sizeof($result) != 0) {
foreach($result as $row) {
if ($result !== false) {
foreach ($result as $row) {
$array['contact_emails'][0]['contact_email_uuid'] = uuid();
$array['contact_emails'][0]['domain_uuid'] = $row['domain_uuid'];
$array['contact_emails'][0]['contact_uuid'] = $row['contact_uuid'];
@@ -82,9 +74,8 @@ if ($domains_processed == 1) {
$p = new permissions;
$p->add('contact_email_add', 'temp');
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->app_name = contacts::APP_NAME;
$database->app_uuid = contacts::APP_UUID;
$database->save($array, false);
unset($array);
@@ -98,17 +89,15 @@ if ($domains_processed == 1) {
$parameters['domain_uuid'] = $row['domain_uuid'];
$parameters['contact_uuid'] = $row['contact_uuid'];
$parameters['email_address'] = $row['contact_email'];
$database = new database;
$result_2 = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (is_array($result_2) && @sizeof($result_2) != 0) {
if ($result_2 !== false) {
$sql = "update v_contacts set contact_email = null ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and contact_uuid = :contact_uuid ";
$parameters['domain_uuid'] = $row['domain_uuid'];
$parameters['contact_uuid'] = $row['contact_uuid'];
$database = new database;
$database->execute($sql, $parameters);
unset($sql, $parameters);
}
@@ -117,22 +106,17 @@ if ($domains_processed == 1) {
}
unset($result, $row);
}
unset($obj);
//populate primary url from deprecated field in v_contact table
$obj = new schema;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_url'); //check if field exists
//populate primary url from deprecated field in v_contact table
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_url'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_url is not null and contact_url != ''";
$database = new database;
$result = $database->select($sql);
unset($sql);
if (is_array($result) && @sizeof($result) != 0) {
foreach($result as $row) {
if ($result !== false) {
foreach ($result as $row) {
$array['contact_urls'][0]['contact_url_uuid'] = uuid();
$array['contact_urls'][0]['domain_uuid'] = $row['domain_uuid'];
$array['contact_urls'][0]['contact_uuid'] = $row['contact_uuid'];
@@ -142,9 +126,8 @@ if ($domains_processed == 1) {
$p = new permissions;
$p->add('contact_url_add', 'temp');
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->app_name = contacts::APP_NAME;
$database->app_uuid = contacts::APP_UUID;
$database->save($array, false);
unset($array);
@@ -158,7 +141,6 @@ if ($domains_processed == 1) {
$parameters['domain_uuid'] = $row['domain_uuid'];
$parameters['contact_uuid'] = $row['contact_uuid'];
$parameters['url_address'] = $row['contact_url'];
$database = new database;
$result_2 = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
@@ -168,7 +150,6 @@ if ($domains_processed == 1) {
$sql .= "and contact_uuid = :contact_uuid ";
$parameters['domain_uuid'] = $row['domain_uuid'];
$parameters['contact_uuid'] = $row['contact_uuid'];
$database = new database;
$database->execute($sql, $parameters);
unset($sql, $parameters);
}
@@ -177,26 +158,23 @@ if ($domains_processed == 1) {
}
unset($result, $row);
}
unset($obj);
//set [name]_primary fields to 0 where null
$name_tables = array('phones','addresses','emails','urls');
$name_fields = array('phone','address','email','url');
//set [name]_primary fields to 0 where null
$name_tables = array('phones', 'addresses', 'emails', 'urls');
$name_fields = array('phone', 'address', 'email', 'url');
foreach ($name_tables as $name_index => $name_table) {
$sql = "update v_contact_".$name_table." set ".$name_fields[$name_index]."_primary = 0 ";
$sql .= "where ".$name_fields[$name_index]."_primary is null ";
$database = new database;
$sql = "update v_contact_" . $name_table . " set " . $name_fields[$name_index] . "_primary = 0 ";
$sql .= "where " . $name_fields[$name_index] . "_primary is null ";
$database->execute($sql);
unset($sql);
}
unset($name_tables, $name_fields, $name_index, $name_table);
//move the users from the contact groups table into the contact users table
//move the users from the contact groups table into the contact users table
$sql = "select * from v_contact_groups ";
$sql .= "where group_uuid in (select user_uuid from v_users) ";
$database = new database;
$result = $database->select($sql, null, 'all');
if (is_array($result) && @sizeof($result) != 0) {
if ($result !== false) {
foreach ($result as &$row) {
$p = new permissions;
$p->add('contact_user_add', 'temp');
@@ -207,27 +185,22 @@ if ($domains_processed == 1) {
$array['contact_users'][0]['contact_uuid'] = $row["contact_uuid"];
$array['contact_users'][0]['user_uuid'] = $row["group_uuid"];
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->app_name = contacts::APP_NAME;
$database->app_uuid = contacts::APP_UUID;
$database->save($array, false);
unset($array);
$array['contact_groups'][0]['contact_group_uuid'] = $row["contact_group_uuid"];
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->app_name = contacts::APP_NAME;
$database->app_uuid = contacts::APP_UUID;
$database->delete($array);
unset($array);
$p->delete('contact_user_add', 'temp');
$p->delete('contact_group_delete', 'temp');
}
}
unset($sql, $result, $row);
}
}
?>
+3 -3
View File
@@ -5377,9 +5377,9 @@ $text['description-import_delimiter']['ko-kr'] = "구분 기호(쉼표 또는
$text['description-users']['en-us'] = "Users allowed to view this contact.";
$text['description-users']['en-gb'] = "Users allowed to view this contact.";
$text['description-users']['ar-eg'] = "يسمح للمستخدمين بمشاهدة جهة الاتصال هذه.";
$text['description-users']['de-at'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu. ";
$text['description-users']['de-ch'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu. ";
$text['description-users']['de-de'] = "Weisen Sie diesem Konferenzraum weitere Administratoren zu. ";
$text['description-users']['de-at'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
$text['description-users']['de-ch'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
$text['description-users']['de-de'] = "Legen Sie die Benutzer fest, für die dieser Kontakt sichtbar ist.";
$text['description-users']['el-gr'] = "Επιλέξτε τους χρήστες στους οποίους επιτρέπεται να εμφανίζεται η επαφή.";
$text['description-users']['es-cl'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
$text['description-users']['es-mx'] = "Asignar usuarios adicionales como administradores de esta sala de conferencia.";
+79 -43
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):
@@ -55,18 +55,20 @@
//get http post variables and set them to php variables
if (!empty($_POST)) {
//set the variables
$attachment = $_FILES['attachment'];
$attachment_primary = $_POST['attachment_primary'];
$attachment_description = $_POST['attachment_description'];
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: contacts.php');
exit;
}
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: contacts.php');
exit;
}
//get the attachment type
if (empty($attachment) || sizeof($attachment) == 0) {
$attachment_type = strtolower(pathinfo($_POST['attachment_filename'], PATHINFO_EXTENSION));
}
@@ -75,48 +77,82 @@
}
//unflag others as primary
$allowed_primary_attachment = false;
if ($attachment_primary && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
$sql = "update v_contact_attachments set attachment_primary = 0 ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and contact_uuid = :contact_uuid ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['contact_uuid'] = $contact_uuid;
$database = new database;
$database->execute($sql, $parameters ?? null);
unset($sql, $parameters);
$allowed_primary_attachment = false;
if ($attachment_primary && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
$sql = "update v_contact_attachments set attachment_primary = 0 ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and contact_uuid = :contact_uuid ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['contact_uuid'] = $contact_uuid;
$database = new database;
$database->execute($sql, $parameters ?? null);
unset($sql, $parameters);
$allowed_primary_attachment = true;
}
$allowed_primary_attachment = true;
}
//format array
$allowed_extensions = array_keys(json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true));
$array['contact_attachments'][0]['contact_attachment_uuid'] = $action == 'update' ? $contact_attachment_uuid : uuid();
$array['contact_attachments'][0]['domain_uuid'] = $_SESSION['domain_uuid'] ?? '';
$array['contact_attachments'][0]['contact_uuid'] = $contact_uuid;
$array['contact_attachments'][0]['attachment_primary'] = $allowed_primary_attachment ? 1 : 0;
if ($attachment['error'] == '0' && in_array(strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION)), $allowed_extensions)) {
$array['contact_attachments'][0]['attachment_filename'] = $attachment['name'];
$array['contact_attachments'][0]['attachment_content'] = base64_encode(file_get_contents($attachment['tmp_name']));
}
$array['contact_attachments'][0]['attachment_description'] = $attachment_description;
if ($action == 'add') {
$array['contact_attachments'][0]['attachment_uploaded_date'] = 'now()';
$array['contact_attachments'][0]['attachment_uploaded_user_uuid'] = $_SESSION['user_uuid'];
//get the allowed extensions
$allowed_extensions = array_keys(json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true));
//get the attachment extension
$attachment_extension = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
//check the allowed extensions
if ($attachment['error'] == '0' && in_array($attachment_extension, $allowed_extensions)) {
//get the attachment content
$attachment_content = file_get_contents($attachment['tmp_name']);
//list of image extensions
$image_extensions = array('png','jpg','jpeg','gif','bmp', 'webp');
//read the image from the string then output the image without meta data
if (in_array($attachment_extension, $image_extensions)) {
//create the image object from the content string
$image = imagecreatefromstring($attachment_content);
//start output buffering to capture the image data
ob_start();
//output the image without the EXIF data
imagepng($image);
//get the image from the buffer
$attachment_content = ob_get_contents();
//end the buffering
ob_end_clean();
//free up the memory
imagedestroy($image);
}
}
//prepare the array
$array['contact_attachments'][0]['contact_attachment_uuid'] = $action == 'update' ? $contact_attachment_uuid : uuid();
$array['contact_attachments'][0]['domain_uuid'] = $_SESSION['domain_uuid'] ?? '';
$array['contact_attachments'][0]['contact_uuid'] = $contact_uuid;
$array['contact_attachments'][0]['attachment_primary'] = $allowed_primary_attachment ? 1 : 0;
if ($attachment['error'] == '0' && in_array(strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION)), $allowed_extensions)) {
$array['contact_attachments'][0]['attachment_filename'] = $attachment['name'];
$array['contact_attachments'][0]['attachment_content'] = base64_encode($attachment_content);
}
$array['contact_attachments'][0]['attachment_description'] = $attachment_description;
if ($action == 'add') {
$array['contact_attachments'][0]['attachment_uploaded_date'] = 'now()';
$array['contact_attachments'][0]['attachment_uploaded_user_uuid'] = $_SESSION['user_uuid'];
}
//save data
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->save($array);
unset($array);
$database = new database;
$database->app_name = 'contacts';
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$database->save($array);
unset($array);
//redirect
message::add($text['message-'.($action == 'update' ? 'update' : 'uploaded')]);
header('Location: contact_edit.php?id='.$contact_uuid);
exit;
message::add($text['message-'.($action == 'update' ? 'update' : 'uploaded')]);
header('Location: contact_edit.php?id='.$contact_uuid);
exit;
}
//get form data
@@ -240,4 +276,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>
+19 -7
View File
@@ -89,7 +89,7 @@
//$contact_users = $_POST["contact_users"];
//$contact_groups = $_POST["contact_groups"];
$contact_user_uuid = $_POST["contact_user_uuid"] ?? null;
$contact_user_uuid = ($_SESSION['contact']['permissions']['boolean'] == "true") ? ($_POST["contact_user_uuid"] ?? $_SESSION["user_uuid"]) : ($contact_user_uuid = $_POST["contact_user_uuid"] ?? null);
$contact_group_uuid = $_POST["contact_group_uuid"] ?? null;
$contact_phones = $_POST["contact_phones"];
@@ -336,11 +336,23 @@
$y = 0;
if (isset($contact_user_uuid)) {
$array['contacts'][0]['contact_users'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['contacts'][0]['contact_users'][$y]['contact_user_uuid'] = uuid();
$array['contacts'][0]['contact_users'][$y]['contact_uuid'] = $contact_uuid;
$array['contacts'][0]['contact_users'][$y]['user_uuid'] = $contact_user_uuid;
$y++;
$sql = "select contact_uuid from v_contact_users ";
$sql .= "where contact_uuid = :contact_uuid ";
$sql .= "and user_uuid = :user_uuid ";
$parameters['contact_uuid'] = $contact_uuid;
$parameters['user_uuid'] = $contact_user_uuid;
$database = new database;
$users = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (is_array($users) === false || count($users) === 0)
{
$array['contacts'][0]['contact_users'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['contacts'][0]['contact_users'][$y]['contact_user_uuid'] = uuid();
$array['contacts'][0]['contact_users'][$y]['contact_uuid'] = $contact_uuid;
$array['contacts'][0]['contact_users'][$y]['user_uuid'] = $contact_user_uuid;
$y++;
}
}
$y = 0;
@@ -1512,7 +1524,7 @@ if ($_SESSION['contact']['permissions']['boolean'] == "true") {
echo " <select name='contact_user_uuid' class='formfld' style='width: auto;'>\n";
echo " <option value=''></option>\n";
foreach ($users as $field) {
if (in_array($field['user_uuid'], array_column($contact_users_assigned, 'user_uuid'))) { continue; } //skip users already assigned
if (!empty($contact_users_assigned) && in_array($field['user_uuid'], array_column($contact_users_assigned, 'user_uuid'))) { continue; } //skip users already assigned
echo " <option value='".escape($field['user_uuid'])."'>".escape($field['username'])."</option>\n";
}
echo " </select>\n";
+1 -8
View File
@@ -40,13 +40,6 @@
//set additional variables
$show = $_GET["show"] ?? '';
//get posted data
if (!empty($_POST['contacts'])) {
$action = $_POST['action'];
$search = $_POST['search'];
$name = $_POST['name'];
}
//retrieve current user's assigned groups (uuids)
foreach ($_SESSION['groups'] as $group_data) {
$user_group_uuids[] = $group_data['group_uuid'];
@@ -56,7 +49,7 @@
$user_group_uuids[] = $_SESSION["user_uuid"];
//add the search term
if (isset($search)) {
if (!empty($_GET["search"])) {
$search = strtolower($_GET["search"]);
}
+4 -2
View File
@@ -28,6 +28,8 @@
if (!class_exists('contacts')) {
class contacts {
const APP_NAME = "contacts";
const APP_UUID = "04481e0e-a478-c559-adad-52bd4174574c";
/**
* declare private variables
*/
@@ -49,8 +51,8 @@ if (!class_exists('contacts')) {
public function __construct() {
//assign private variables
$this->app_name = 'contacts';
$this->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
$this->app_name = self::APP_NAME;
$this->app_uuid = self::APP_UUID;
$this->permission_prefix = 'contact_';
$this->list_page = 'contacts.php';
$this->tables[] = 'contact_addresses';
+38 -1
View File
@@ -6,6 +6,7 @@ $text['title-database_transactions']['ar-eg'] = "معاملات قواعد ال
$text['title-database_transactions']['de-at'] = "Datenbank Transaktionen";
$text['title-database_transactions']['de-ch'] = "Datenbank Transaktionen";
$text['title-database_transactions']['de-de'] = "Datenbank Transaktionen";
$text['title-database_transactions']['el-gr'] = "Συναλλαγές Βάσεων Δεδομένων";
$text['title-database_transactions']['es-cl'] = "Transacciones de bases de datos";
$text['title-database_transactions']['es-mx'] = "Transacciones de bases de datos";
$text['title-database_transactions']['fr-ca'] = "Transactions de base de données";
@@ -30,6 +31,7 @@ $text['title-database_transaction']['ar-eg'] = "قواعد البيانات";
$text['title-database_transaction']['de-at'] = "Datenbank Transaktionen";
$text['title-database_transaction']['de-ch'] = "Datenbank Transaktionen";
$text['title-database_transaction']['de-de'] = "Datenbank Transaktionen";
$text['title-database_transaction']['el-gr'] = "vΣυναλλαγή βάσης δεδομένων";
$text['title-database_transaction']['es-cl'] = "Transacción de bases de datos";
$text['title-database_transaction']['es-mx'] = "Transacción de bases de datos";
$text['title-database_transaction']['fr-ca'] = "Transactions de base de données";
@@ -54,6 +56,7 @@ $text['description-database_transactions']['ar-eg'] = "تغيير المسار
$text['description-database_transactions']['de-at'] = "Verfolgen Sie Änderungen an der Datenbank. Verfolgen Sie, wann die Änderungen vorgenommen wurden, den Benutzer und die Adresse des Benutzers, der die Änderungen vorgenommen hat. Stellen Sie eine Option bereit, um das Löschen und Aktualisieren von Transaktionen rückgängig zu machen.";
$text['description-database_transactions']['de-ch'] = "Verfolgen Sie Änderungen an der Datenbank. Verfolgen Sie, wann die Änderungen vorgenommen wurden, den Benutzer und die Adresse des Benutzers, der die Änderungen vorgenommen hat. Stellen Sie eine Option bereit, um das Löschen und Aktualisieren von Transaktionen rückgängig zu machen.";
$text['description-database_transactions']['de-de'] = "Verfolgen Sie Änderungen an der Datenbank. Verfolgen Sie, wann die Änderungen vorgenommen wurden, den Benutzer und die Adresse des Benutzers, der die Änderungen vorgenommen hat. Stellen Sie eine Option bereit, um das Löschen und Aktualisieren von Transaktionen rückgängig zu machen.";
$text['description-database_transactions']['el-gr'] = "Παρακολούθηση αλλαγών στη βάση δεδομένων. Παρακολουθήστε πότε έγιναν οι αλλαγές, τον χρήστη και τη διεύθυνση του χρήστη που έκανε τις αλλαγές. Παρέχετε μια επιλογή για αναίρεση διαγραφής και ενημέρωση συναλλαγών.";
$text['description-database_transactions']['es-cl'] = "Seguimiento de cambios en la base de datos. Rastrea cuando se hicieron los cambios, el usuario y la dirección del usuario que hizo los cambios. Proporcionar una opción para deshacer transacciones de borrado y actualización.";
$text['description-database_transactions']['es-mx'] = "Seguimiento de cambios en la base de datos. Rastrea cuando se hicieron los cambios, el usuario y la dirección del usuario que hizo los cambios. Proporcionar una opción para deshacer transacciones de borrado y actualización.";
$text['description-database_transactions']['fr-ca'] = "Suivre les modifications apportées à la base de données. Suivez le moment où les modifications ont été apportées, l'utilisateur et l'adresse de l'utilisateur qui a effectué les modifications. Fournir une option pour annuler la suppression et la mise à jour des transactions.";
@@ -78,6 +81,7 @@ $text['label-user']['ar-eg'] = "مستخدم";
$text['label-user']['de-at'] = "Benutzer";
$text['label-user']['de-ch'] = "Benutzer";
$text['label-user']['de-de'] = "Benutzer";
$text['label-user']['el-gr'] = "Χρήστης";
$text['label-user']['es-cl'] = "Usuario";
$text['label-user']['es-mx'] = "Usuario";
$text['label-user']['fr-ca'] = "Utilisateur";
@@ -102,6 +106,7 @@ $text['label-user_uuid']['ar-eg'] = "مستخدم";
$text['label-user_uuid']['de-at'] = "Benutzer";
$text['label-user_uuid']['de-ch'] = "Benutzer";
$text['label-user_uuid']['de-de'] = "Benutzer";
$text['label-user_uuid']['el-gr'] = "Χρήστης";
$text['label-user_uuid']['es-cl'] = "Usuario";
$text['label-user_uuid']['es-mx'] = "Usuario";
$text['label-user_uuid']['fr-ca'] = "Utilisateur";
@@ -126,6 +131,7 @@ $text['description-user_uuid']['ar-eg'] = "معاملة مستعمل";
$text['description-user_uuid']['de-at'] = "Benutzer Transaktion";
$text['description-user_uuid']['de-ch'] = "Benutzer Transaktion";
$text['description-user_uuid']['de-de'] = "Benutzer Transaktion";
$text['description-user_uuid']['el-gr'] = "Συναλλαγή χρήστη.";
$text['description-user_uuid']['es-cl'] = "Transacciones de usuario.";
$text['description-user_uuid']['es-mx'] = "Transacciones de usuario.";
$text['description-user_uuid']['fr-ca'] = "Transaction d'utilisateur";
@@ -150,6 +156,7 @@ $text['label-app_name']['ar-eg'] = "التطبيق";
$text['label-app_name']['de-at'] = "Anwendung";
$text['label-app_name']['de-ch'] = "Anwendung";
$text['label-app_name']['de-de'] = "Anwendung";
$text['label-app_name']['el-gr'] = "Εφαρμογή";
$text['label-app_name']['es-cl'] = "Aplicación";
$text['label-app_name']['es-mx'] = "Aplicación";
$text['label-app_name']['fr-ca'] = "Application";
@@ -174,6 +181,7 @@ $text['description-app_name']['ar-eg'] = "اسم الطلب";
$text['description-app_name']['de-at'] = "Anwendungs-Name.";
$text['description-app_name']['de-ch'] = "Anwendungs-Name.";
$text['description-app_name']['de-de'] = "Anwendungs-Name.";
$text['description-app_name']['el-gr'] = "Ονομα εφαρμογής.";
$text['description-app_name']['es-cl'] = "Nombre de aplicación.";
$text['description-app_name']['es-mx'] = "Nombre de aplicación.";
$text['description-app_name']['fr-ca'] = "Nom de l'application";
@@ -198,6 +206,7 @@ $text['label-app_uuid']['ar-eg'] = "رقم الاستمارة";
$text['label-app_uuid']['de-at'] = "Anwendungs-ID";
$text['label-app_uuid']['de-ch'] = "Anwendungs-ID";
$text['label-app_uuid']['de-de'] = "Anwendungs-ID";
$text['label-app_uuid']['el-gr'] = "Αναγνωριστικό εφαρμογής";
$text['label-app_uuid']['es-cl'] = "Aplicación Id";
$text['label-app_uuid']['es-mx'] = "Aplicación Id";
$text['label-app_uuid']['fr-ca'] = "ID d'application";
@@ -222,6 +231,7 @@ $text['description-app_uuid']['ar-eg'] = "اسم التطبيق.";
$text['description-app_uuid']['de-at'] = "Anwendungs-Name.";
$text['description-app_uuid']['de-ch'] = "Anwendungs-Name.";
$text['description-app_uuid']['de-de'] = "Anwendungs-Name.";
$text['description-app_uuid']['el-gr'] = "Ονομα εφαρμογής.";
$text['description-app_uuid']['es-cl'] = "Nombre de aplicación.";
$text['description-app_uuid']['es-mx'] = "Nombre de aplicación.";
$text['description-app_uuid']['fr-ca'] = "Nom de l'application";
@@ -246,6 +256,7 @@ $text['label-transaction_code']['ar-eg'] = "المدونة";
$text['label-transaction_code']['de-at'] = "Code";
$text['label-transaction_code']['de-ch'] = "Code";
$text['label-transaction_code']['de-de'] = "Code";
$text['label-transaction_code']['el-gr'] = "Κώδικας";
$text['label-transaction_code']['es-cl'] = "Código";
$text['label-transaction_code']['es-mx'] = "Código";
$text['label-transaction_code']['fr-ca'] = "Code";
@@ -270,6 +281,7 @@ $text['description-transaction_code']['ar-eg'] = "رمز المعاملات";
$text['description-transaction_code']['de-at'] = "Transaktions-Code";
$text['description-transaction_code']['de-ch'] = "Transaktions-Code";
$text['description-transaction_code']['de-de'] = "Transaktions-Code";
$text['description-transaction_code']['el-gr'] = "Κωδικός συναλλαγής.";
$text['description-transaction_code']['es-cl'] = "Código de transacción.";
$text['description-transaction_code']['es-mx'] = "Código de transacción.";
$text['description-transaction_code']['fr-ca'] = "Code de transaction";
@@ -294,6 +306,7 @@ $text['label-transaction_address']['ar-eg'] = "العنوان";
$text['label-transaction_address']['de-at'] = "IP Adresse";
$text['label-transaction_address']['de-ch'] = "IP Adresse";
$text['label-transaction_address']['de-de'] = "IP Adresse";
$text['label-transaction_address']['el-gr'] = "Διεύθυνση IP";
$text['label-transaction_address']['es-cl'] = "Dirección IP";
$text['label-transaction_address']['es-mx'] = "Dirección IP";
$text['label-transaction_address']['fr-ca'] = "adresse IP";
@@ -318,6 +331,7 @@ $text['description-transaction_address']['ar-eg'] = "عنوان آي بي للم
$text['description-transaction_address']['de-at'] = "IP Adresse des Anwenders";
$text['description-transaction_address']['de-ch'] = "IP Adresse des Anwenders";
$text['description-transaction_address']['de-de'] = "IP Adresse des Anwenders";
$text['description-transaction_address']['el-gr'] = "Διεύθυνση IP του χρήστη.";
$text['description-transaction_address']['es-cl'] = "Dirección IP del usuario.";
$text['description-transaction_address']['es-mx'] = "Dirección IP del usuario.";
$text['description-transaction_address']['fr-ca'] = "Adresse IP de l'utilisateur";
@@ -342,6 +356,7 @@ $text['label-transaction_type']['ar-eg'] = "النوع";
$text['label-transaction_type']['de-at'] = "Typ";
$text['label-transaction_type']['de-ch'] = "Typ";
$text['label-transaction_type']['de-de'] = "Typ";
$text['label-transaction_type']['el-gr'] = "Τύπος";
$text['label-transaction_type']['es-cl'] = "Tipo";
$text['label-transaction_type']['es-mx'] = "Tipo";
$text['label-transaction_type']['fr-ca'] = "Type";
@@ -366,6 +381,7 @@ $text['description-transaction_type']['ar-eg'] = "النوع: إضافة، تح
$text['description-transaction_type']['de-at'] = "Typ: add, update, delete";
$text['description-transaction_type']['de-ch'] = "Typ: add, update, delete";
$text['description-transaction_type']['de-de'] = "Typ: add, update, delete";
$text['description-transaction_type']['el-gr'] = "Τύπος: προσθήκη, ενημέρωση, διαγραφή";
$text['description-transaction_type']['es-cl'] = "Tipo: añadir, actualizar, eliminar";
$text['description-transaction_type']['es-mx'] = "Tipo: añadir, actualizar, eliminar";
$text['description-transaction_type']['fr-ca'] = "Type: ajouter, mettre à jour, supprimer";
@@ -390,11 +406,12 @@ $text['label-transaction_date']['ar-eg'] = "التاريخ";
$text['label-transaction_date']['de-at'] = "Datum";
$text['label-transaction_date']['de-ch'] = "Datum";
$text['label-transaction_date']['de-de'] = "Datum";
$text['label-transaction_date']['el-gr'] = "Ημερομηνία";
$text['label-transaction_date']['es-cl'] = "Fecha";
$text['label-transaction_date']['es-mx'] = "Fecha";
$text['label-transaction_date']['fr-ca'] = "Date";
$text['label-transaction_date']['fr-fr'] = "Date";
$text['label-transaction_date']['he-il'] = "תאריך תאריך תאריך תאריך";
$text['label-transaction_date']['he-il'] = "תאריך";
$text['label-transaction_date']['it-it'] = "Data";
$text['label-transaction_date']['nl-nl'] = "Datum";
$text['label-transaction_date']['pl-pl'] = "Data";
@@ -414,6 +431,7 @@ $text['description-transaction_date']['ar-eg'] = "تاريخ المعاملات"
$text['description-transaction_date']['de-at'] = "Transaktions-Datum";
$text['description-transaction_date']['de-ch'] = "Transaktions-Datum";
$text['description-transaction_date']['de-de'] = "Transaktions-Datum";
$text['description-transaction_date']['el-gr'] = "Ημερομηνία Συναλλαγής.";
$text['description-transaction_date']['es-cl'] = "Fecha de transacción.";
$text['description-transaction_date']['es-mx'] = "Fecha de transacción.";
$text['description-transaction_date']['fr-ca'] = "Date de la transaction.";
@@ -438,6 +456,7 @@ $text['label-transaction_old']['ar-eg'] = "قبل";
$text['label-transaction_old']['de-at'] = "Vor";
$text['label-transaction_old']['de-ch'] = "Vor";
$text['label-transaction_old']['de-de'] = "Vor";
$text['label-transaction_old']['el-gr'] = "Πριν";
$text['label-transaction_old']['es-cl'] = "Antes";
$text['label-transaction_old']['es-mx'] = "Antes";
$text['label-transaction_old']['fr-ca'] = "Avant";
@@ -462,6 +481,7 @@ $text['description-transaction_old']['ar-eg'] = "أراي قبل الصفقة";
$text['description-transaction_old']['de-at'] = "Array vor der Transaktion.";
$text['description-transaction_old']['de-ch'] = "Array vor der Transaktion.";
$text['description-transaction_old']['de-de'] = "Array vor der Transaktion.";
$text['description-transaction_old']['el-gr'] = "Συστοιχία πριν από τη συναλλαγή.";
$text['description-transaction_old']['es-cl'] = "Array antes de la transacción.";
$text['description-transaction_old']['es-mx'] = "Array antes de la transacción.";
$text['description-transaction_old']['fr-ca'] = "Tableau avant la transaction";
@@ -486,6 +506,7 @@ $text['label-transaction_new']['ar-eg'] = "بعد";
$text['label-transaction_new']['de-at'] = "Nach";
$text['label-transaction_new']['de-ch'] = "Nach";
$text['label-transaction_new']['de-de'] = "Nach";
$text['label-transaction_new']['el-gr'] = "Μετά";
$text['label-transaction_new']['es-cl'] = "Después";
$text['label-transaction_new']['es-mx'] = "Después";
$text['label-transaction_new']['fr-ca'] = "Après";
@@ -510,6 +531,7 @@ $text['description-transaction_new']['ar-eg'] = "أصرخ بعد الصفقة";
$text['description-transaction_new']['de-at'] = "Array nach der Transaktion.";
$text['description-transaction_new']['de-ch'] = "Array nach der Transaktion.";
$text['description-transaction_new']['de-de'] = "Array nach der Transaktion.";
$text['description-transaction_new']['el-gr'] = "Συστοιχία μετά τη συναλλαγή.";
$text['description-transaction_new']['es-cl'] = "Array después de la transacción.";
$text['description-transaction_new']['es-mx'] = "Array después de la transacción.";
$text['description-transaction_new']['fr-ca'] = "Tableau après la transaction";
@@ -534,6 +556,7 @@ $text['label-transaction_result']['ar-eg'] = "النتيجة";
$text['label-transaction_result']['de-at'] = "Ergebnis";
$text['label-transaction_result']['de-ch'] = "Ergebnis";
$text['label-transaction_result']['de-de'] = "Ergebnis";
$text['label-transaction_result']['el-gr'] = "Αποτέλεσμα";
$text['label-transaction_result']['es-cl'] = "Resultado";
$text['label-transaction_result']['es-mx'] = "Resultado";
$text['label-transaction_result']['fr-ca'] = "Résultat";
@@ -558,6 +581,7 @@ $text['description-transaction_result']['ar-eg'] = "نتيجة الصفقة";
$text['description-transaction_result']['de-at'] = "Ergebnis der Transaktion.";
$text['description-transaction_result']['de-ch'] = "Ergebnis der Transaktion.";
$text['description-transaction_result']['de-de'] = "Ergebnis der Transaktion.";
$text['description-transaction_result']['el-gr'] = "Αποτέλεσμα της συναλλαγής.";
$text['description-transaction_result']['es-cl'] = "Resultado de la transacción.";
$text['description-transaction_result']['es-mx'] = "Resultado de la transacción.";
$text['description-transaction_result']['fr-ca'] = "Résultat de la transaction";
@@ -582,6 +606,7 @@ $text['label-true']['ar-eg'] = "صحيح";
$text['label-true']['de-at'] = "wahr";
$text['label-true']['de-ch'] = "wahr";
$text['label-true']['de-de'] = "wahr";
$text['label-true']['el-gr'] = "αληθής";
$text['label-true']['es-cl'] = "verdadero";
$text['label-true']['es-mx'] = "verdadero";
$text['label-true']['fr-ca'] = "Vrai";
@@ -606,6 +631,7 @@ $text['label-false']['ar-eg'] = "كاذب";
$text['label-false']['de-at'] = "aus";
$text['label-false']['de-ch'] = "aus";
$text['label-false']['de-de'] = "aus";
$text['label-false']['el-gr'] = "ψευδής";
$text['label-false']['es-cl'] = "falso";
$text['label-false']['es-mx'] = "falso";
$text['label-false']['fr-ca'] = "Faux";
@@ -630,6 +656,7 @@ $text['button-add']['ar-eg'] = "يضيف";
$text['button-add']['de-at'] = "Hinzufügen";
$text['button-add']['de-ch'] = "Hinzufügen";
$text['button-add']['de-de'] = "Hinzufügen";
$text['button-add']['el-gr'] = "Προσθήκη";
$text['button-add']['es-cl'] = "Añadir";
$text['button-add']['es-mx'] = "Añadir";
$text['button-add']['fr-ca'] = "Ajouter";
@@ -654,6 +681,7 @@ $text['button-edit']['ar-eg'] = "يحرر";
$text['button-edit']['de-at'] = "Bearbeiten";
$text['button-edit']['de-ch'] = "Bearbeiten";
$text['button-edit']['de-de'] = "Bearbeiten";
$text['button-edit']['el-gr'] = "Επεξεργασία";
$text['button-edit']['es-cl'] = "Editar";
$text['button-edit']['es-mx'] = "Editar";
$text['button-edit']['fr-ca'] = "Modifier";
@@ -678,6 +706,7 @@ $text['button-delete']['ar-eg'] = "تحذف";
$text['button-delete']['de-at'] = "Löschen";
$text['button-delete']['de-ch'] = "Löschen";
$text['button-delete']['de-de'] = "Löschen";
$text['button-delete']['el-gr'] = "Διαγράφω";
$text['button-delete']['es-cl'] = "Suprimir";
$text['button-delete']['es-mx'] = "Suprimir";
$text['button-delete']['fr-ca'] = "Supprimer";
@@ -702,6 +731,7 @@ $text['button-save']['ar-eg'] = "أنقذ";
$text['button-save']['de-at'] = "Speichern";
$text['button-save']['de-ch'] = "Speichern";
$text['button-save']['de-de'] = "Speichern";
$text['button-save']['el-gr'] = "Αποθηκεύσετε";
$text['button-save']['es-cl'] = "Guardar";
$text['button-save']['es-mx'] = "Guardar";
$text['button-save']['fr-ca'] = "Enregistrer";
@@ -726,6 +756,7 @@ $text['button-view']['ar-eg'] = "رأي";
$text['button-view']['de-at'] = "Anzeigen";
$text['button-view']['de-ch'] = "Anzeigen";
$text['button-view']['de-de'] = "Anzeigen";
$text['button-view']['el-gr'] = "Θέα";
$text['button-view']['es-cl'] = "Ver";
$text['button-view']['es-mx'] = "Ver";
$text['button-view']['fr-ca'] = "Vue";
@@ -750,6 +781,7 @@ $text['button-back']['ar-eg'] = "العودة";
$text['button-back']['de-at'] = "Zurück";
$text['button-back']['de-ch'] = "Zurück";
$text['button-back']['de-de'] = "Zurück";
$text['button-back']['el-gr'] = "Πίσω";
$text['button-back']['es-cl'] = "Atrás";
$text['button-back']['es-mx'] = "Atrás";
$text['button-back']['fr-ca'] = "Retour";
@@ -774,6 +806,7 @@ $text['confirm-delete']['ar-eg'] = "هل تريد حقا حذف هذا؟";
$text['confirm-delete']['de-at'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete']['de-ch'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete']['de-de'] = "Wollen Sie das wirklich löschen?";
$text['confirm-delete']['el-gr'] = "Θέλετε πραγματικά να το διαγράψετε;";
$text['confirm-delete']['es-cl'] = "¿De verdad quieres borrar esto?";
$text['confirm-delete']['es-mx'] = "¿De verdad quieres borrar esto?";
$text['confirm-delete']['fr-ca'] = "Voulez-vous vraiment supprimer ca";
@@ -798,6 +831,7 @@ $text['message-add']['ar-eg'] = "اكتمل الإضافة";
$text['message-add']['de-at'] = "Erfolgreich hinzugefügt";
$text['message-add']['de-ch'] = "Erfolgreich hinzugefügt";
$text['message-add']['de-de'] = "Erfolgreich hinzugefügt";
$text['message-add']['el-gr'] = "Προσθήκη Ολοκληρώθηκε";
$text['message-add']['es-cl'] = "Añadir Completed";
$text['message-add']['es-mx'] = "Añadir Completed";
$text['message-add']['fr-ca'] = "Ajouter terminé";
@@ -822,6 +856,7 @@ $text['message-update']['ar-eg'] = "تحديث الانتهاء";
$text['message-update']['de-at'] = "Aktualisierung durchgeführt";
$text['message-update']['de-ch'] = "Aktualisierung durchgeführt";
$text['message-update']['de-de'] = "Aktualisierung durchgeführt";
$text['message-update']['el-gr'] = "Η ενημέρωση ολοκληρώθηκε";
$text['message-update']['es-cl'] = "Actualización completada";
$text['message-update']['es-mx'] = "Actualización completada";
$text['message-update']['fr-ca'] = "Mise à jour terminée";
@@ -846,6 +881,7 @@ $text['message-delete']['ar-eg'] = "اكتمل الحذف";
$text['message-delete']['de-at'] = "Erfolgreich gelöscht";
$text['message-delete']['de-ch'] = "Erfolgreich gelöscht";
$text['message-delete']['de-de'] = "Erfolgreich gelöscht";
$text['message-delete']['el-gr'] = "Διαγραφή Ολοκληρώθηκε";
$text['message-delete']['es-cl'] = "Suprimir";
$text['message-delete']['es-mx'] = "Suprimir";
$text['message-delete']['fr-ca'] = "Supprimer terminé";
@@ -870,6 +906,7 @@ $text['message-required']['ar-eg'] = "يرجى تقديم:";
$text['message-required']['de-at'] = "Bitte geben Sie folgendes an:";
$text['message-required']['de-ch'] = "Bitte geben Sie folgendes an:";
$text['message-required']['de-de'] = "Bitte geben Sie folgendes an:";
$text['message-required']['el-gr'] = "Παρέχετε:";
$text['message-required']['es-cl'] = "Sírvanse proporcionar:";
$text['message-required']['es-mx'] = "Sírvanse proporcionar:";
$text['message-required']['fr-ca'] = "Veuillez fournir";
+1 -1
View File
@@ -34,7 +34,7 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "destinations";
$apps[$x]['destinations'][$y]['name'] = "destinations";
$apps[$x]['destinations'][$y]['sql'] = "select destination_uuid, destination_number, destination_context, destination_description from v_destinations ";
$apps[$x]['destinations'][$y]['sql'] = "select destination_uuid, destination_uuid as uuid, destination_number, destination_context, destination_description from v_destinations ";
$apps[$x]['destinations'][$y]['where'] = "where (domain_uuid = '\${domain_uuid}' or domain_uuid is null) and (destination_type = 'outbound' or destination_type = 'local') and destination_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "destination_number asc";
$apps[$x]['destinations'][$y]['field']['destination_uuid'] = "destination_uuid";
File diff suppressed because it is too large Load Diff
+38 -1
View File
@@ -7,6 +7,7 @@
$apps[$x]['menu'][$y]['title']['de-at'] = "Ziele";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Reiseziele";
$apps[$x]['menu'][$y]['title']['de-de'] = "Ziele";
$apps[$x]['menu'][$y]['title']['el-gr'] = "Προορισμοί";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Destinos";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Destinos";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Destinations";
@@ -21,6 +22,7 @@
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Направления";
$apps[$x]['menu'][$y]['title']['sv-se'] = "Destinationer";
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Номери";
$apps[$x]['menu'][$y]['title']['tr-tr'] = "Destinasyonlar";
$apps[$x]['menu'][$y]['title']['zh-cn'] = "目的地";
$apps[$x]['menu'][$y]['title']['ja-jp'] = "行き先";
$apps[$x]['menu'][$y]['title']['ko-kr'] = "목적지";
@@ -33,5 +35,40 @@
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$apps[$x]['menu'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "Destination Summary";
$apps[$x]['menu'][$y]['title']['en-gb'] = "Destination Summary";
$apps[$x]['menu'][$y]['title']['ar-eg'] = "ملخص الوجهة";
$apps[$x]['menu'][$y]['title']['de-at'] = "Zielübersicht";
$apps[$x]['menu'][$y]['title']['de-ch'] = "Zielübersicht";
$apps[$x]['menu'][$y]['title']['de-de'] = "Zielübersicht";
$apps[$x]['menu'][$y]['title']['el-gr'] = "Περίληψη προορισμού";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Resumen de destino";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Resumen de destino";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "Résumé des destinations";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Résumé des destinations";
$apps[$x]['menu'][$y]['title']['he-il'] = "סיכום יעד";
$apps[$x]['menu'][$y]['title']['it-it'] = "Riepilogo della destinazione";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Podsumowanie miejsca docelowego";
$apps[$x]['menu'][$y]['title']['pl-pl'] = "Bestemmingssamenvatting";
$apps[$x]['menu'][$y]['title']['pt-br'] = "Resumo do destino";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Resumo do destino";
$apps[$x]['menu'][$y]['title']['ro-ro'] = "Rezumatul destinației";
$apps[$x]['menu'][$y]['title']['ru-ru'] = "Сводная информация о пункте назначения";
$apps[$x]['menu'][$y]['title']['sv-se'] = "Destinationssammanfattning";
$apps[$x]['menu'][$y]['title']['uk-ua'] = "Резюме призначення";
$apps[$x]['menu'][$y]['title']['tr-tr'] = "Hedef Özeti";
$apps[$x]['menu'][$y]['title']['zh-cn'] = "目的地概要";
$apps[$x]['menu'][$y]['title']['ja-jp'] = "目的地の概要";
$apps[$x]['menu'][$y]['title']['ko-kr'] = "목적지 요약";
$apps[$x]['menu'][$y]['uuid'] = "47f7b1a4-1ea2-4068-8e14-b1c13c489bd2";
$apps[$x]['menu'][$y]['parent_uuid'] = "0438b504-8613-7887-c420-c837ffb20cb1";
$apps[$x]['menu'][$y]['category'] = "internal";
$apps[$x]['menu'][$y]['icon'] = "";
$apps[$x]['menu'][$y]['path'] = "/app/destinations/destination_summary.php";
$apps[$x]['menu'][$y]['order'] = "";
$apps[$x]['menu'][$y]['groups'][] = "admin";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
?>
@@ -64,6 +64,8 @@
$available_columns[] = 'destination_type_voice';
$available_columns[] = 'destination_type_fax';
$available_columns[] = 'destination_type_text';
$available_columns[] = 'destination_conditions';
$available_columns[] = 'destination_actions';
$available_columns[] = 'destination_app';
$available_columns[] = 'destination_data';
$available_columns[] = 'destination_alternate_app';
File diff suppressed because it is too large Load Diff
+23 -11
View File
@@ -217,9 +217,19 @@
foreach ($array['destinations'] as $row) {
//build the array
$actions[0]['destination_app'] = $row['destination_app'];
$actions[0]['destination_data'] = $row['destination_data'];
$destination_actions = json_encode($actions);
if (!empty($row['destination_actions']) && is_json($row['destination_actions'])) {
$destination_actions = $row['destination_actions']; // use json actions
$temp = json_decode($row['destination_actions'], true);
$row['destination_app'] = $temp[array_key_last($temp)]['destination_app'];
$row['destination_data'] = $temp[array_key_last($temp)]['destination_data'];
unset($temp);
}
else if (!empty($row['destination_app']) && !empty($row['destination_data'])) {
$actions[0]['destination_app'] = $row['destination_app'];
$actions[0]['destination_data'] = $row['destination_data'];
$destination_actions = json_encode($actions);
unset($actions);
}
//get the values
$destination_number = $row['destination_number'];
@@ -241,6 +251,8 @@
//add the additional fields
$dialplan_uuid = uuid();
$array["destinations"][$row_id]['destination_actions'] = $destination_actions;
$array["destinations"][$row_id]['destination_app'] = $destination_app;
$array["destinations"][$row_id]['destination_data'] = $destination_data;
$array["destinations"][$row_id]['destination_type'] = $destination_type;
$array["destinations"][$row_id]['destination_record'] = $destination_record;
$array["destinations"][$row_id]['destination_context'] = $destination_context;
@@ -274,14 +286,14 @@
//authorized specific dialplan_detail_type that are safe, sanitize all other values
switch ($dialplan_detail_type) {
case 'destination_number':
break;
case '${sip_to_user}':
break;
case '${sip_req_user}':
break;
default:
$dialplan_detail_type = xml::sanitize($dialplan_detail_type);
case 'destination_number':
break;
case '${sip_to_user}':
break;
case '${sip_req_user}':
break;
default:
$dialplan_detail_type = xml::sanitize($dialplan_detail_type);
}
//build the xml dialplan

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