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

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

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

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

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

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

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

* Update voicemail_greeting_edit.php
2024-09-26 15:57:22 -06:00
FusionPBX 1393a29607 Allow right click open in new window 2024-09-26 09:47:54 -06:00
FusionPBX 3b61bb645a Add the domain_name variable
Without the domain_name variable in some cases the confirm option doesn't work.
2024-09-26 08:45:53 -06:00
FusionPBX d77e862ac1 More efficient use of the database object 2024-09-23 19:34:49 -06:00
FusionPBX 85d7c8e60c Fix voicemail greeting for base64
- Use the settings class
- Re-use the database object
- Update the indentation
2024-09-23 18:18:40 -06:00
FusionPBX 4b7e90c3ff Restore previous caller ID behavior
If the caller ID was updated then update the caller ID
2024-09-23 13:01:47 -06:00
FusionPBX 72470b5863 Fix permission_exists fax_file_edit 2024-09-21 21:13:40 -06:00
FusionPBX 52a320ec54 Fixed the registration count
- Fixed on the dashboard for those with superadmin group
- Fixed the count in the SIP status page
2024-09-21 12:39:10 -06:00
FusionPBX 91b845dc71 Default value for create recording should always be false 2024-09-20 23:10:00 -06:00
FusionPBX c2107802d8 Add ignore early media for external calls 2024-09-20 16:19:26 -06:00
FusionPBX 7ed752ef7a Get the domain_name with a different variable
Get the domain_name with a different variable if the domain_name is not set
2024-09-20 16:17:05 -06:00
FusionPBX 02ce497e5c Use ring group destination confirm true when call screen is enabled 2024-09-20 13:16:06 -06:00
markjcrane fbe358816f Remove the CSS card overflow it cut off the date-time picker 2024-09-20 10:57:56 -06:00
markjcrane 00c0fbe06d Remove carriage return per line and leave only line feeds 2024-09-19 17:24:16 -06:00
markjcrane 26530d6fe0 Fix end of file line only use one line feed at the end of the file 2024-09-19 16:44:08 -06:00
FusionPBX c766b5c634 Align SEARCH and other buttons to the right 2024-09-18 18:46:55 -06:00
FusionPBX 5b66aa1aa7 Show only default extension type
Hide virtual extensions
2024-09-18 11:53:42 -06:00
FusionPBX fca042e996 Update the border radius 2024-09-18 11:38:37 -06:00
FusionPBX 937b470630 FIFO Queues added to destination select list
- This was missed in the destination select list and  should be there by default.
- Also add a new permission fifo_destinations
2024-09-17 22:53:17 -06:00
FusionPBX 4490631485 Fix voicemail base64 greeting 2024-09-17 17:47:22 -06:00
FusionPBX bfa0046dd4 Add ring group call screen translations 2024-09-16 23:57:29 -06:00
533 changed files with 9163 additions and 21686 deletions
+11 -12
View File
@@ -38,9 +38,6 @@
$language = new text;
$text = $language->get();
//create the database connection
$database = database::new();
//action add or update
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
$action = "update";
@@ -96,17 +93,20 @@
switch ($_POST['action']) {
case 'copy':
if (permission_exists('access_control_add')) {
$database->copy($array);
$obj = new database;
$obj->copy($array);
}
break;
case 'delete':
if (permission_exists('access_control_delete')) {
$database->delete($array);
$obj = new database;
$obj->delete($array);
}
break;
case 'toggle':
if (permission_exists('access_control_update')) {
$database->toggle($array);
$obj = new database;
$obj->toggle($array);
}
break;
}
@@ -202,7 +202,7 @@
//attempt digs
if (!empty($digs) && is_array($digs)) {
foreach ($digs as $dig) {
$response = shell_exec("dig +noall +answer ".escapeshellarg(str_replace(' ', '', $dig['value']))." | awk '{ print $5 }'");
$response = shell_exec("dig +noall +answer ".escapeshellarg($dig['value'])." | awk '{ print $5 }'");
if (!empty($response)) {
$lines = explode("\n", $response);
foreach ($lines as $l => $line) {
@@ -217,7 +217,7 @@
$array['access_controls'][0]['access_control_nodes'][$y]['access_control_node_uuid'] = uuid();
$array['access_controls'][0]['access_control_nodes'][$y]['node_type'] = $dig['type'];
$array['access_controls'][0]['access_control_nodes'][$y]['node_cidr'] = $line.'/32';
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = !empty($dig['description']) ? $dig['description'] : str_replace(' ', '', $dig['value']);
$array['access_controls'][0]['access_control_nodes'][$y]['node_description'] = !empty($dig['description']) ? $dig['description'] : $dig['value'];
$y++;
}
}
@@ -229,6 +229,7 @@
//save the data
if (is_array($array)) {
$database = new database;
$database->app_name = 'access controls';
$database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
$database->save($array);
@@ -265,7 +266,7 @@
$sql = "select * from v_access_controls ";
$sql .= "where access_control_uuid = :access_control_uuid ";
$parameters['access_control_uuid'] = $access_control_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (!empty($row) && count($row) > 0) {
$access_control_name = $row["access_control_name"];
@@ -281,6 +282,7 @@
$sql .= "where access_control_uuid = :access_control_uuid ";
$sql .= "order by node_cidr asc";
$parameters['access_control_uuid'] = $access_control_uuid;
$database = new database;
$access_control_nodes = $database->select($sql, $parameters, 'all');
unset ($sql, $parameters);
}
@@ -324,9 +326,6 @@
if (permission_exists('access_control_node_add')) {
echo button::create(['type'=>'button','label'=>$text['button-import'],'icon'=>$_SESSION['theme']['button_icon_import'],'style'=>'margin-right: 3px;','link'=>'access_control_import.php?id='.escape($access_control_uuid)]);
}
if (permission_exists('access_control_node_view')) {
echo button::create(['type'=>'button','label'=>$text['button-export'],'icon'=>$_SESSION['theme']['button_icon_export'],'style'=>'margin-right: 3px;','link'=>'access_control_export.php?id='.escape($access_control_uuid)]);
}
if (permission_exists('access_control_node_add')) {
echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
}
@@ -1,185 +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-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/paging.php";
//check permissions
if (permission_exists('access_control_node_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//initialize the database object
$database = new database;
//add multi-lingual support
$language = new text;
$text = $language->get();
//define available columns
$available_columns[] = 'node_type';
$available_columns[] = 'node_cidr';
$available_columns[] = 'node_description';
$available_columns[] = 'insert_date';
$available_columns[] = 'insert_user';
$available_columns[] = 'update_date';
$available_columns[] = 'update_user';
//action add or update
if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
$access_control_uuid = $_REQUEST["id"];
}
//define the functions
function array2csv(array &$array) {
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen("php://output", 'w');
fputcsv($df, array_keys(reset($array)));
foreach ($array as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}
//send download headers
function download_send_headers($filename) {
// disable caching
$now = gmdate("D, d M Y H:i:s");
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
// force download
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
// disposition / encoding on response body
header("Content-Disposition: attachment;filename={$filename}");
header("Content-Transfer-Encoding: binary");
}
//get the extensions from the database and send them as output
if (!empty($_REQUEST["column_group"]) && is_array($_REQUEST["column_group"]) && @sizeof($_REQUEST["column_group"]) != 0) {
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: access_control_export.php');
exit;
}
//validate submitted columns
foreach ($_REQUEST["column_group"] as $column_name) {
if (in_array($column_name, $available_columns)) {
$selected_columns[] = $column_name;
}
}
if (!empty($access_control_uuid) && is_uuid($access_control_uuid) && is_array($selected_columns) && @sizeof($selected_columns) != 0) {
//get the child data
$sql = "select ".implode(', ', $selected_columns)." from v_access_control_nodes ";
$sql .= "where access_control_uuid = :access_control_uuid ";
$sql .= "order by node_cidr asc";
$parameters['access_control_uuid'] = $access_control_uuid;
$access_control_nodes = $database->select($sql, $parameters, 'all');
unset($sql, $parameters, $selected_columns);
//send the download headers
download_send_headers("access_control_export_".date("Y-m-d").".csv");
//output the data
echo array2csv($access_control_nodes);
exit;
}
}
//create token
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include the header
$document['title'] = $text['title-access_control_export'];
require_once "resources/header.php";
//show the content
echo "<form method='post' name='frm' id='frm'>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['header-access_control_export']."</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'=>'access_control_edit.php?id='.$access_control_uuid]);
echo button::create(['type'=>'submit','label'=>$text['button-export'],'icon'=>$_SESSION['theme']['button_icon_export'],'id'=>'btn_save','style'=>'margin-left: 15px;']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-access_control_export'];
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='list_all_toggle();' ".(empty($available_columns) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
echo " <th>".$text['label-column_name']."</th>\n";
echo "</tr>\n";
if (!empty($available_columns) && is_array($available_columns) && @sizeof($available_columns) != 0) {
$x = 0;
foreach ($available_columns as $column_name) {
$list_row_onclick = "if (!this.checked) { document.getElementById('checkbox_all').checked = false; }";
echo "<tr class='list-row'>\n";
echo " <td class='checkbox'>\n";
echo " <input type='checkbox' name='column_group[]' id='checkbox_".$x."' value=\"".$column_name."\" onclick=\"".$list_row_onclick."\">\n";
echo " </td>\n";
echo " <td onclick=\"document.getElementById('checkbox_".$x."').checked = document.getElementById('checkbox_".$x."').checked ? false : true; ".$list_row_onclick."\">".$column_name."</td>";
echo "</tr>";
$x++;
}
}
echo "</table>\n";
echo "</div>\n";
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
//include the footer
require_once "resources/footer.php";
?>
-5
View File
@@ -211,12 +211,8 @@
if (!empty($access_controls) && count($access_controls) > 0) {
$x = 0;
foreach ($access_controls as $row) {
$list_row_url = '';
if (permission_exists('access_control_edit')) {
$list_row_url = "access_control_edit.php?id=".urlencode($row['access_control_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) {
@@ -258,4 +254,3 @@
require_once "resources/footer.php";
?>
+2 -1
View File
@@ -55,6 +55,7 @@
$y++;
$apps[$x]['permissions'][$y]['name'] = "access_control_node_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
//cache details
$apps[$x]['cache']['key'] = "configuration.acl.conf";
@@ -72,7 +73,7 @@
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "access_control_default";
+1 -1
View File
@@ -33,7 +33,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $settings->get('switch','conf').'/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';
+26 -107
View File
@@ -108,59 +108,32 @@ $text['title-access_control']['zh-cn'] = "访问控制";
$text['title-access_control']['ja-jp'] = "アクセス制御";
$text['title-access_control']['ko-kr'] = "액세스 제어";
$text['title-access_control_export']['en-us'] = "Access Control Export";
$text['title-access_control_export']['en-gb'] = "Access Control Export";
$text['title-access_control_export']['ar-eg'] = "";
$text['title-access_control_export']['de-at'] = "";
$text['title-access_control_export']['de-ch'] = "";
$text['title-access_control_export']['de-de'] = "";
$text['title-access_control_export']['ek-gr'] = "";
$text['title-access_control_export']['es-cl'] = "";
$text['title-access_control_export']['es-mx'] = "";
$text['title-access_control_export']['fr-ca'] = "";
$text['title-access_control_export']['fr-fr'] = "";
$text['title-access_control_export']['he-il'] = "";
$text['title-access_control_export']['it-it'] = "";
$text['title-access_control_export']['ka-ge'] = "";
$text['title-access_control_export']['nl-nl'] = "";
$text['title-access_control_export']['pl-pl'] = "";
$text['title-access_control_export']['pt-br'] = "";
$text['title-access_control_export']['pt-pt'] = "";
$text['title-access_control_export']['ro-ro'] = "";
$text['title-access_control_export']['ru-ru'] = "";
$text['title-access_control_export']['sv-se'] = "";
$text['title-access_control_export']['uk-ua'] = "";
$text['title-access_control_export']['tr-tr'] = "";
$text['title-access_control_export']['zh-cn'] = "";
$text['title-access_control_export']['ja-jp'] = "";
$text['title-access_control_export']['ko-kr'] = "";
$text['header-access_control_export']['en-us'] = "Access Control Export";
$text['header-access_control_export']['en-gb'] = "Access Control Export";
$text['header-access_control_export']['ar-eg'] = "";
$text['header-access_control_export']['de-at'] = "";
$text['header-access_control_export']['de-ch'] = "";
$text['header-access_control_export']['de-de'] = "";
$text['header-access_control_export']['ek-gr'] = "";
$text['header-access_control_export']['es-cl'] = "";
$text['header-access_control_export']['es-mx'] = "";
$text['header-access_control_export']['fr-ca'] = "";
$text['header-access_control_export']['fr-fr'] = "";
$text['header-access_control_export']['he-il'] = "";
$text['header-access_control_export']['it-it'] = "";
$text['header-access_control_export']['ka-ge'] = "";
$text['header-access_control_export']['nl-nl'] = "";
$text['header-access_control_export']['pl-pl'] = "";
$text['header-access_control_export']['pt-br'] = "";
$text['header-access_control_export']['pt-pt'] = "";
$text['header-access_control_export']['ro-ro'] = "";
$text['header-access_control_export']['ru-ru'] = "";
$text['header-access_control_export']['sv-se'] = "";
$text['header-access_control_export']['uk-ua'] = "";
$text['header-access_control_export']['tr-tr'] = "";
$text['header-access_control_export']['zh-cn'] = "";
$text['header-access_control_export']['ja-jp'] = "";
$text['header-access_control_export']['ko-kr'] = "";
$text['title_description-access_controls']['en-us'] = "Access control list can allow or deny ranges of IP addresses.";
$text['title_description-access_controls']['en-gb'] = "Access control list can allow or deny ranges of IP addresses.";
$text['title_description-access_controls']['ar-eg'] = "قائمة التحكم بالوصول يمكن السماح أو الرفض نطاقات العناوين.";
$text['title_description-access_controls']['de-at'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-ch'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-de'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['el-gr'] = "Access control list can allow or deny ranges of IP addresses";
$text['title_description-access_controls']['es-cl'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['es-mx'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['fr-fr'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['he-il'] = " רשימת בקרת גישה יכולה לאפשר או למנוע טווחים של כתובות IP.";
$text['title_description-access_controls']['it-it'] = "Le liste per il controllo di accesso permettono o negano l'accesso a range di IP.";
$text['title_description-access_controls']['ka-ge'] = "წვდომის კონტროლის სიას IP მისამართების შუალედების დაშვება ან აკრძალვა შეუძლია";
$text['title_description-access_controls']['nl-nl'] = "Toegang Controle lijst kan IP adres reeks toestaan of verbieden.";
$text['title_description-access_controls']['pl-pl'] = "Lista kontroli dostępu może umożliwić lub zablokować zakresy adresów IP.";
$text['title_description-access_controls']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
$text['title_description-access_controls']['pt-pt'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
$text['title_description-access_controls']['ro-ro'] = "Lista de control al accesului poate permite sau refuza intervale de adrese IP.";
$text['title_description-access_controls']['ru-ru'] = "Контроль доступа может разрешить или запретить диапазоны IP адресов.";
$text['title_description-access_controls']['sv-se'] = "Åtkomstkontrollista kan tillåta eller neka intervall av IP-adresser.";
$text['title_description-access_controls']['uk-ua'] = "Список контролю доступу може дозволити або заборонити діапазони IP-адрес.";
$text['title_description-access_controls']['tr-tr'] = "Erişim kontrol listesi IP adres aralıklarına izin verebilir veya reddedebilir.";
$text['title_description-access_controls']['zh-cn'] = "访问控制列表可以允许或拒绝 IP 地址范围。";
$text['title_description-access_controls']['ja-jp'] = "アクセス コントロール リストでは、IP アドレスの範囲を許可または拒否できます。";
$text['title_description-access_controls']['ko-kr'] = "액세스 제어 목록은 IP 주소 범위를 허용하거나 거부할 수 있습니다.";
$text['label-node_type']['en-us'] = "Type";
$text['label-node_type']['en-gb'] = "Type";
@@ -432,33 +405,6 @@ $text['label-access_control_description']['zh-cn'] = "描述";
$text['label-access_control_description']['ja-jp'] = "説明";
$text['label-access_control_description']['ko-kr'] = "설명";
$text['title_description-access_controls']['en-us'] = "Access control list can allow or deny ranges of IP addresses.";
$text['title_description-access_controls']['en-gb'] = "Access control list can allow or deny ranges of IP addresses.";
$text['title_description-access_controls']['ar-eg'] = "قائمة التحكم بالوصول يمكن السماح أو الرفض نطاقات العناوين.";
$text['title_description-access_controls']['de-at'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-ch'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['de-de'] = "Die Zugriffskontrollliste kann Bereiche von IP Adressen zulassen oder ablehnen.";
$text['title_description-access_controls']['el-gr'] = "Access control list can allow or deny ranges of IP addresses";
$text['title_description-access_controls']['es-cl'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['es-mx'] = "Lista de control de acceso puede permitir o denegar los rangos de direcciones IP.";
$text['title_description-access_controls']['fr-ca'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['fr-fr'] = "Liste de contrôle d'accès peut autoriser ou refuser des plages d'adresses IP.";
$text['title_description-access_controls']['he-il'] = " רשימת בקרת גישה יכולה לאפשר או למנוע טווחים של כתובות IP.";
$text['title_description-access_controls']['it-it'] = "Le liste per il controllo di accesso permettono o negano l'accesso a range di IP.";
$text['title_description-access_controls']['ka-ge'] = "წვდომის კონტროლის სიას IP მისამართების შუალედების დაშვება ან აკრძალვა შეუძლია";
$text['title_description-access_controls']['nl-nl'] = "Toegang Controle lijst kan IP adres reeks toestaan of verbieden.";
$text['title_description-access_controls']['pl-pl'] = "Lista kontroli dostępu może umożliwić lub zablokować zakresy adresów IP.";
$text['title_description-access_controls']['pt-br'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
$text['title_description-access_controls']['pt-pt'] = "Lista de controle de acesso pode permitir ou negar intervalos de endereços IP.";
$text['title_description-access_controls']['ro-ro'] = "Lista de control al accesului poate permite sau refuza intervale de adrese IP.";
$text['title_description-access_controls']['ru-ru'] = "Контроль доступа может разрешить или запретить диапазоны IP адресов.";
$text['title_description-access_controls']['sv-se'] = "Åtkomstkontrollista kan tillåta eller neka intervall av IP-adresser.";
$text['title_description-access_controls']['uk-ua'] = "Список контролю доступу може дозволити або заборонити діапазони IP-адрес.";
$text['title_description-access_controls']['tr-tr'] = "Erişim kontrol listesi IP adres aralıklarına izin verebilir veya reddedebilir.";
$text['title_description-access_controls']['zh-cn'] = "访问控制列表可以允许或拒绝 IP 地址范围。";
$text['title_description-access_controls']['ja-jp'] = "アクセス コントロール リストでは、IP アドレスの範囲を許可または拒否できます。";
$text['title_description-access_controls']['ko-kr'] = "액세스 제어 목록은 IP 주소 범위를 허용하거나 거부할 수 있습니다.";
$text['description-node_type']['en-us'] = "Select the type.";
$text['description-node_type']['en-gb'] = "Select the type.";
$text['description-node_type']['ar-eg'] = "حدد نوع.";
@@ -648,31 +594,4 @@ $text['description-access_control_default']['zh-cn'] = "选择默认类型。";
$text['description-access_control_default']['ja-jp'] = "デフォルトのタイプを選択します。";
$text['description-access_control_default']['ko-kr'] = "기본 유형을 선택합니다.";
$text['description-access_control_export']['en-us'] = "Select the fields you wish to include in the export.";
$text['description-access_control_export']['en-gb'] = "Select the fields you wish to include in the export.";
$text['description-access_control_export']['ar-eg'] = "حدد الحقول التي ترغب في تضمينها في التصدير.";
$text['description-access_control_export']['de-at'] = "Wählen Sie die Felder aus, die Sie in den Export einbeziehen möchten.";
$text['description-access_control_export']['de-ch'] = "Wählen Sie die Felder aus, die Sie in den Export einbeziehen möchten.";
$text['description-access_control_export']['de-de'] = "Wählen Sie die Felder aus, die Sie in den Export einbeziehen möchten.";
$text['description-access_control_export']['ek-gr'] = "Επιλέξτε τα πεδία που θέλετε να συμπεριλάβετε στην εξαγωγή.";
$text['description-access_control_export']['es-cl'] = "Seleccione los campos que desea incluir en la exportación.";
$text['description-access_control_export']['es-mx'] = "Seleccione los campos que desea incluir en la exportación.";
$text['description-access_control_export']['fr-ca'] = "Sélectionnez les champs que vous souhaitez inclure dans l'exportation.";
$text['description-access_control_export']['fr-fr'] = "Sélectionnez les champs que vous souhaitez inclure dans l'exportation.";
$text['description-access_control_export']['he-il'] = "בחר את השדות שברצונך לכלול בייצוא.";
$text['description-access_control_export']['it-it'] = "Seleziona i campi che desideri includere nell'esportazione.";
$text['description-access_control_export']['ka-ge'] = "აირჩიეთ ექსპორტში ჩასასმელი ველები.";
$text['description-access_control_export']['nl-nl'] = "Selecteer de velden die u in de export wilt opnemen.";
$text['description-access_control_export']['pl-pl'] = "Wybierz pola, które chcesz uwzględnić w eksporcie.";
$text['description-access_control_export']['pt-br'] = "Selecione os campos que deseja incluir na exportação.";
$text['description-access_control_export']['pt-pt'] = "Selecione os campos que deseja incluir na exportação.";
$text['description-access_control_export']['ro-ro'] = "Selectați câmpurile pe care doriți să le includeți în export.";
$text['description-access_control_export']['ru-ru'] = "Выберите поля, которые вы хотите включить в экспорт.";
$text['description-access_control_export']['sv-se'] = "Välj de fält du vill inkludera i exporten.";
$text['description-access_control_export']['uk-ua'] = "Виберіть поля, які потрібно включити в експорт.";
$text['description-access_control_export']['tr-tr'] = "Dışa aktarmaya dahil etmek istediğiniz alanları seçin.";
$text['description-access_control_export']['zh-cn'] = "选择您希望包含在导出中的字段。";
$text['description-access_control_export']['ja-jp'] = "エクスポートに含めるフィールドを選択します。";
$text['description-access_control_export']['ko-kr'] = "내보내기에 포함할 필드를 선택합니다.";
?>
@@ -2,7 +2,11 @@
/**
* access controls class
*
* @method null download
*/
if (!class_exists('access_controls')) {
class access_controls {
/**
@@ -260,3 +264,6 @@
}
}
}
}
?>
-8
View File
@@ -192,13 +192,5 @@
$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'] = "4f4641c3-7398-421e-a0b3-5d7960813728";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "avaya_blf_subscription_expiry";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "60";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "The expiry that Avaya phones will populate in their SUBSCRIBE messages. This should be set to equal or less than the nonce-ttl value that is set in your SIP profile.";
$y++;
?>
@@ -27,6 +27,7 @@
/**
* Define the operator_panel class
*/
if (!class_exists('basic_operator_panel')) {
class basic_operator_panel {
/**
@@ -244,3 +245,6 @@
return $result;
}
}
}
?>
@@ -353,7 +353,7 @@ if (is_array($activity)) {
}
else {
//unregistered extension
if (filter_var($_SESSION['operator_panel']['show_unregistered']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (!empty($_SESSION['operator_panel']['show_unregistered']['boolean']) && $_SESSION['operator_panel']['show_unregistered']['boolean'] == 'true') {
$css_class = "ur_ext";
}
else {
@@ -551,7 +551,7 @@ if (is_array($activity)) {
if (in_array($extension, $_SESSION['user']['extensions'])) {
$user_extensions[] = $block;
} elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'] ?? false, FILTER_VALIDATE_BOOLEAN)) {
} elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'], FILTER_VALIDATE_BOOLEAN)) {
$grouped_extensions[$ext['call_group']][] = $block;
} else {
$other_extensions[] = $block;
+4 -8
View File
@@ -47,7 +47,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['bridges'])) {
@@ -126,7 +126,7 @@
$offset = $rows_per_page * $page;
//get the list
$sql = "select d.domain_uuid, b.bridge_uuid, d.domain_name, b.bridge_name, b.bridge_destination, bridge_enabled, bridge_description ";
$sql = "select b.bridge_uuid, d.domain_name, b.bridge_name, b.bridge_destination, bridge_enabled, bridge_description ";
$sql .= "from v_bridges as b, v_domains as d ";
$sql .= "where b.domain_uuid = d.domain_uuid ";
if (!empty($show) && $show == "all" && permission_exists('bridge_all')) {
@@ -226,7 +226,7 @@
echo th_order_by('bridge_destination', $text['label-bridge_destination'], $order_by, $order);
echo th_order_by('bridge_enabled', $text['label-bridge_enabled'], $order_by, $order, null, "class='center'");
echo " <th class='hide-sm-dn'>".$text['label-bridge_description']."</th>\n";
if (permission_exists('bridge_edit') && $list_row_edit_button) {
if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -234,12 +234,8 @@
if (!empty($bridges)) {
$x = 0;
foreach ($bridges as $row) {
$list_row_url = '';
if (permission_exists('bridge_edit')) {
$list_row_url = "bridge_edit.php?id=".urlencode($row['bridge_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) {
@@ -270,7 +266,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['bridge_description'])."</td>\n";
if (permission_exists('bridge_edit') && $list_row_edit_button) {
if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -25,6 +25,7 @@
*/
//define the bridges class
if (!class_exists('bridges')) {
class bridges {
/**
@@ -254,3 +255,6 @@
}
}
}
?>
+3 -8
View File
@@ -46,7 +46,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['call_blocks'])) {
@@ -301,7 +301,7 @@
echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
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) {
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -309,12 +309,8 @@
if (!empty($result)) {
$x = 0;
foreach ($result as $row) {
$list_row_url = '';
if (permission_exists('call_block_edit')) {
$list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) {
@@ -385,7 +381,7 @@
echo " </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) {
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -409,4 +405,3 @@
require_once "resources/footer.php";
?>
+2 -6
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-2025
Portions created by the Initial Developer are Copyright (C) 2008-2024
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -557,7 +557,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
}
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-enabled']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
@@ -674,8 +674,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo modal::create(['id'=>'modal-block','type'=>'general','message'=>$text['confirm-block'],'actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_block','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_form_submit('form_list');"])]);
}
echo "<div class='card'>\n";
foreach (['inbound','outbound'] as $direction) {
echo "<table class='list' id='list_".$direction."' ".($direction == 'outbound' ? "style='display: none;'" : null).">\n";
echo "<tr class='list-header'>\n";
@@ -756,8 +754,6 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</table>\n";
}
echo "</div>\n";
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
@@ -2,7 +2,10 @@
/**
* call block class
*
* @method null download
*/
if (!class_exists('call_block')) {
class call_block {
/**
@@ -456,3 +459,6 @@
} //method
} //class
}
?>
@@ -5,7 +5,6 @@ $array['dashboard'][$x]['dashboard_uuid'] = 'e75f04ff-6d1b-4b39-af0f-e1d1860327c
$array['dashboard'][$x]['dashboard_name'] = 'Call Block';
$array['dashboard'][$x]['dashboard_path'] = 'dashboard/icon';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-ban';
$array['dashboard'][$x]['dashboard_icon_color'] = '#EA4C46';
$array['dashboard'][$x]['dashboard_url'] = '/app/call_block/call_block.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
@@ -14,15 +13,14 @@ $array['dashboard'][$x]['dashboard_content'] = '';
$array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '#444444';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_heading_text_color'] = '';
$array['dashboard'][$x]['dashboard_heading_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_heading_background_color'] = '';
$array['dashboard'][$x]['dashboard_heading_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_background_color'] = '#ffffff';
$array['dashboard'][$x]['dashboard_number_text_color'] = '#EA4C46';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
+3 -8
View File
@@ -47,7 +47,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['call_broadcasts'])) {
@@ -219,7 +219,7 @@
echo th_order_by('broadcast_concurrent_limit', $text['label-concurrent-limit'], $order_by, $order);
echo th_order_by('broadcast_start_time', $text['label-start_time'], $order_by, $order);
echo th_order_by('broadcast_description', $text['label-description'], $order_by, $order);
if (permission_exists('call_broadcast_edit') && $list_row_edit_button) {
if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -227,12 +227,8 @@
if (!empty($result)) {
$x = 0;
foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_broadcast_edit')) {
$list_row_url = "call_broadcast_edit.php?id=".urlencode($row['call_broadcast_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) {
@@ -266,7 +262,7 @@
}
echo " <td>".escape($broadcast_start_time ?? '')."</td>\n";
echo " <td class='description overflow hide-xs'>".escape($row['broadcast_description'])."</td>\n";
if (permission_exists('call_broadcast_edit') && $list_row_edit_button) {
if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -290,4 +286,3 @@
require_once "resources/footer.php";
?>
@@ -27,7 +27,10 @@
/**
* call broadcast class
*
* @method null download
*/
if (!class_exists('call_broadcast')) {
class call_broadcast {
/**
@@ -174,3 +177,6 @@
}
}
}
?>
@@ -221,18 +221,9 @@
$talk_time = $agent_row['talk_time'];
$ready_time = $agent_row['ready_time'];
//calcudate the length since status change and bridge end
$last_status_change_length = time() - $last_status_change;
$last_bridge_end_length = time() - $last_bridge_end;
//set the state to wrap up time
if ($last_bridge_end_length < $wrap_up_time) {
$state = 'Wrap Up Time';
}
//format the seconds to hh:mm:ss
$last_status_change_length_formatted = format_seconds($last_status_change_length);
$last_bridge_end_length_formatted = format_seconds($last_bridge_end_length);
$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;
@@ -250,8 +241,8 @@
echo "<td>".escape($agent_extension)."</td>\n";
echo "<td>".escape($status)."</td>\n";
echo "<td>".escape($state)."</td>\n";
echo "<td>".escape($last_status_change_length_formatted)."</td>\n";
echo "<td>".escape($last_bridge_end_length_formatted)."</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";
@@ -398,4 +389,4 @@
}
?>
?>
@@ -128,9 +128,6 @@
$x = 0;
foreach($call_center_queues as $row) {
$list_row_url = PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".escape($row['call_center_queue_uuid'])."&name=".urlencode(escape($row['queue_name']));
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
echo " <td><a href='".$list_row_url."'>".escape($row['queue_name'])."</a></td>\n";
echo " <td>".escape($row['queue_extension'])."</td>\n";
@@ -162,4 +159,3 @@
require_once "resources/footer.php";
?>
+2 -2
View File
@@ -93,8 +93,8 @@ if ($domains_processed == 1) {
//add the recording path if needed
if ($row['queue_greeting'] != '') {
if (file_exists($settings->get('switch','recordings').'/'.$row['domain_name'].'/'.$row['queue_greeting'])) {
$queue_greeting_path = $settings->get('switch','recordings').'/'.$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']);
+1 -1
View File
@@ -401,7 +401,7 @@
echo " ".$text['label-agent_password']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld password' type='password' name='agent_password' autocomplete='off' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!\$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" maxlength='255' min='1' step='1' value='".escape($agent_password)."'>\n";
echo " <input class='formfld' type='password' name='agent_password' autocomplete='off' onmouseover=\"this.type='text';\" onfocus=\"this.type='text';\" onmouseout=\"if (!\$(this).is(':focus')) { this.type='password'; }\" onblur=\"this.type='password';\" maxlength='255' min='1' step='1' value='".escape($agent_password)."'>\n";
echo "<br />\n";
echo $text['description-agent_password']."\n";
echo "</td>\n";
+3 -8
View File
@@ -43,7 +43,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['call_center_agents'])) {
@@ -206,7 +206,7 @@
//echo th_order_by('agent_wrap_up_time', $text['label-wrap_up_time'], $order_by, $order);
//echo th_order_by('agent_reject_delay_time', $text['label-reject_delay_time'], $order_by, $order);
//echo th_order_by('agent_busy_delay_time', $text['label-busy_delay_time'], $order_by, $order);
if (permission_exists('call_center_agent_edit') && $list_row_edit_button) {
if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -214,12 +214,8 @@
if (!empty($result)) {
$x = 0;
foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_center_agent_edit')) {
$list_row_url = "call_center_agent_edit.php?id=".urlencode($row['call_center_agent_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_center_agent_delete')) {
@@ -270,7 +266,7 @@
//echo " <td>".$row[agent_wrap_up_time]."</td>\n";
//echo " <td>".$row[agent_reject_delay_time]."</td>\n";
//echo " <td>".$row[agent_busy_delay_time]."</td>\n";
if (permission_exists('call_center_agent_edit') && $list_row_edit_button) {
if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -294,4 +290,3 @@
require_once "resources/footer.php";
?>
+3 -8
View File
@@ -46,7 +46,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['call_center_queues']) && is_array($_POST['call_center_queues'])) {
@@ -219,7 +219,7 @@
//echo th_order_by('queue_abandoned_resume_allowed', $text['label-abandoned_resume_allowed'], $order_by, $order);
//echo th_order_by('queue_tier_rule_wait_multiply_level', $text['label-tier_rule_wait_multiply_level'], $order_by, $order);
echo th_order_by('queue_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('call_center_queue_edit') && $list_row_edit_button) {
if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -227,12 +227,8 @@
if (!empty($result)) {
$x = 0;
foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_center_queue_edit')) {
$list_row_url = "call_center_queue_edit.php?id=".urlencode($row['call_center_queue_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) {
@@ -273,7 +269,7 @@
//echo " <td>".escape($row[queue_abandoned_resume_allowed])."&nbsp;</td>\n";
//echo " <td>".escape($row[queue_tier_rule_wait_multiply_level])."&nbsp;</td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['queue_description'])."</td>\n";
if (permission_exists('call_center_queue_edit') && $list_row_edit_button) {
if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -297,4 +293,3 @@
require_once "resources/footer.php";
?>
@@ -26,8 +26,11 @@
/**
* cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for call center
*/
//define the call center class
if (!class_exists('call_center')) {
class call_center {
/**
* define the variables
@@ -608,6 +611,7 @@
} //method
} //class
}
/*
$o = new call_center;
@@ -621,3 +625,5 @@ $c->destination_number = "";
$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-2025
Portions created by the Initial Developer are Copyright (C) 2017-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -258,24 +258,21 @@
echo "</script>\n";
//show the content
echo "<div class='hud_box'>";
echo "<div class='hud_content' style='display: block;'>\n";
echo " <div class='action_bar sub'>\n";
echo " <div class='heading' style='padding-left: 5px;'><b>".$text['header-call_center_queues'].(!empty($agent['agent_name']) ? "&nbsp;&nbsp;&nbsp;</b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
echo " <div class='actions' style='padding-top: 2px;'>\n";
echo "<div class='action_bar sub'>\n";
echo " <div class='heading'><b>".$text['header-call_center_queues'].(!empty($agent['agent_name']) ? "&nbsp;&nbsp;&nbsp;</b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"document.getElementById('form_list_call_center_agent_dashboard').submit();"]);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo " <form id='form_list_call_center_agent_dashboard' method='post'>\n";
echo "<form id='form_list_call_center_agent_dashboard' method='post'>\n";
echo " <table class='list' style='padding: 0 5px;'>\n";
echo " <tr class='list-header'>\n";
echo " <th>".$text['label-queue_name']."</th>\n";
echo " <th class='shrink'>".$text['label-status']."</th>\n";
echo " </tr>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo " <th>".$text['label-queue_name']."</th>\n";
echo " <th class='shrink'>".$text['label-status']."</th>\n";
echo "</tr>\n";
if (!empty($call_center_queues) && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
$x = 0;
@@ -298,12 +295,9 @@
unset($call_center_queues);
}
echo " </table>\n";
echo " <br />\n";
echo " <input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo " </form>\n";
echo "</div>\n";
echo "</div>\n";
echo "</table>\n";
echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
?>
@@ -3,29 +3,6 @@
$array['dashboard'][$x]['dashboard_uuid'] = '9083305a-ebb4-4b67-bb9b-8c09cf030261';
$array['dashboard'][$x]['dashboard_name'] = 'Call Center Agents';
$array['dashboard'][$x]['dashboard_path'] = 'call_centers/call_center_agents';
$array['dashboard'][$x]['dashboard_icon'] = '';
$array['dashboard'][$x]['dashboard_url'] = '';
$array['dashboard'][$x]['dashboard_target'] = '';
$array['dashboard'][$x]['dashboard_width'] = '';
$array['dashboard'][$x]['dashboard_height'] = '';
$array['dashboard'][$x]['dashboard_content'] = '';
$array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '#3164AD';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] = '#ffffff';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
$array['dashboard'][$x]['dashboard_row_span'] = '2';
$array['dashboard'][$x]['dashboard_details_state'] = 'none';
$array['dashboard'][$x]['dashboard_order'] = '180';
$array['dashboard'][$x]['dashboard_enabled'] = 'false';
$array['dashboard'][$x]['dashboard_description'] = 'Status for agent in a call center.';
+4 -3
View File
@@ -27,7 +27,8 @@
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
//check permisions
@@ -95,8 +96,8 @@
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
+3 -8
View File
@@ -46,7 +46,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get search
$search = $_REQUEST['search'] ?? null;
@@ -235,7 +235,7 @@
}
echo th_order_by('call_flow_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('call_flow_description', $text['label-call_flow_description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('call_flow_edit') && $list_row_edit_button) {
if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -243,12 +243,8 @@
if (!empty($call_flows)) {
$x = 0;
foreach ($call_flows as $row) {
$list_row_url = '';
if (permission_exists('call_flow_edit')) {
$list_row_url = "call_flow_edit.php?id=".urlencode($row['call_flow_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) {
@@ -291,7 +287,7 @@
echo escape($row['call_flow_enabled']);
}
echo " <td class='description overflow hide-sm-dn'>".escape($row['call_flow_description'])."&nbsp;</td>\n";
if (permission_exists('call_flow_edit') && $list_row_edit_button) {
if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -315,4 +311,3 @@
require_once "resources/footer.php";
?>
@@ -25,6 +25,7 @@
*/
//define the call_flows class
if (!class_exists('call_flows')) {
class call_flows {
/**
@@ -409,3 +410,6 @@
} //method
} //class
}
?>
+3 -2
View File
@@ -27,6 +27,7 @@
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
@@ -95,8 +96,8 @@
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
+4 -10
View File
@@ -209,9 +209,6 @@
}
require_once "resources/header.php";
//set the back button
$_SESSION['call_forward_back'] = $_SERVER['PHP_SELF'];
//show the content
if ($is_included) {
echo "<div class='action_bar sub'>\n";
@@ -241,7 +238,7 @@
}
}
if ($show !== 'all' && permission_exists('call_forward_all')) {
echo button::create(['type' => 'button', 'label' => $text['button-show_all'], 'icon' => $_SESSION['theme']['button_icon_all'], 'link' => '?show=all' . (!empty($params) ? '&'.implode('&', $params) : null)]);
echo button::create(['type' => 'button', 'label' => $text['button-show_all'], 'icon' => $_SESSION['theme']['button_icon_all'], 'link' => '?show=all' . $param]);
}
echo "<form id='form_search' class='inline' method='get'>\n";
if ($show == 'all' && permission_exists('call_forward_all')) {
@@ -296,8 +293,8 @@
echo " <th>" . $text['label-dnd'] . "</th>\n";
}
echo " <th class='" . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . $text['label-description'] . "</th>\n";
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
if ($list_row_edit_button) {
$list_row_edit_button = $_SESSION['theme']['list_row_edit_button']['boolean'] ?? 'false';
if ( $list_row_edit_button === 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -306,9 +303,6 @@
$x = 0;
foreach ($extensions as $row) {
$list_row_url = PROJECT_PATH . "/app/call_forward/call_forward_edit.php?id=" . $row['extension_uuid'] . "&return_url=" . urlencode($_SERVER['REQUEST_URI']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
echo "<tr class='list-row' href='" . $list_row_url . "'>\n";
if (!$is_included && $extensions) {
echo " <td class='checkbox'>\n";
@@ -402,7 +396,7 @@
echo " </td>\n";
}
echo " <td class='description overflow " . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . escape($row['description']) . "&nbsp;</td>\n";
if ($list_row_edit_button) {
if ($list_row_edit_button === 'true') {
echo " <td class='action-button'>";
echo button::create(['type' => 'button', 'title' => $text['button-edit'], 'icon' => $_SESSION['theme']['button_icon_edit'], 'link' => $list_row_url]);
echo " </td>\n";
+5 -7
View File
@@ -341,7 +341,7 @@
*/
//send feature event notify to the phone
if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
$ring_count = ceil($call_timeout / 6);
$feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name'];
@@ -358,7 +358,7 @@
else {
$feature_event_notify->forward_all_destination = $forward_all_destination;
}
if ($forward_busy_destination == "") {
$feature_event_notify->forward_busy_destination = "0";
}
@@ -421,6 +421,7 @@
//synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension;
$ext->xml();
unset($ext);
@@ -503,7 +504,7 @@
}
//prepare the autocomplete
if(filter_var($_SESSION['follow_me']['follow_me_autocomplete']['boolean'] ?? false, FILTER_VALIDATE_BOOLEAN)) {
if(!empty($_SESSION['follow_me']['follow_me_autocomplete']['boolean']) && $_SESSION['follow_me']['follow_me_autocomplete']['boolean'] == 'true') {
echo "<link rel=\"stylesheet\" href=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.css\" />\n";
echo "<script src=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.js\"></script>\n";
echo "<script type=\"text/javascript\">\n";
@@ -532,16 +533,13 @@
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//save the back button location using referer
$back_destination = "window.location.href='" . ($_SESSION['call_forward_back'] ?? "/app/call_forward/call_forward.php") . "'";
//show the content
echo "<form method='post' name='frm' id='frm'>\n";
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','onclick'=>$back_destination]);
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";
@@ -227,7 +227,7 @@
$p->delete('extension_edit', 'temp');
//send feature event notify to the phone
if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name'];
@@ -248,6 +248,7 @@
//synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension;
$ext->xml();
unset($ext);
@@ -240,7 +240,7 @@
$p->delete('extension_edit', 'temp');
//send feature event notify to the phone
if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name'];
@@ -261,6 +261,7 @@
//synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension;
$ext->xml();
unset($ext);
@@ -405,7 +405,7 @@
$p->delete('follow_me_edit', 'temp');
//send feature event notify to the phone
if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") {
foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name'];
@@ -426,6 +426,7 @@
//synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension;
$ext->xml();
unset($ext);
@@ -5,7 +5,6 @@ $array['dashboard'][$x]['dashboard_uuid'] = 'ba60799a-1c40-44a8-80ef-c2be4f4692f
$array['dashboard'][$x]['dashboard_name'] = 'Call Forward';
$array['dashboard'][$x]['dashboard_path'] = 'call_forward/call_forward';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-forward';
$array['dashboard'][$x]['dashboard_icon_color'] = '';
$array['dashboard'][$x]['dashboard_url'] = '/app/call_forward/call_forward.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
@@ -19,9 +18,9 @@ $array['dashboard'][$x]['dashboard_label_text_color'] = '';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
@@ -26,7 +26,10 @@
/**
* call_recordings class
*
* @method null download
*/
if (!class_exists('call_recordings')) {
class call_recordings {
/**
@@ -271,7 +274,6 @@
case "ogg" : header("Content-Type: audio/ogg"); break;
}
}
$call_recording_name = preg_replace('#[^a-zA-Z0-9_\-\.]#', '', $call_recording_name);
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
@@ -413,7 +415,7 @@
}
// If the range starts with an '-' we start from the beginning
// If not, we forward the file pointer
// And make sure to get the end byte if specified
// And make sure to get the end byte if spesified
if ($range[0] == '-') {
// The n-number of the last bytes is requested
$c_start = $size - substr($range, 1);
@@ -522,3 +524,6 @@
}
} //class
}
?>
+3 -2
View File
@@ -27,6 +27,7 @@
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
@@ -83,8 +84,8 @@
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
+1 -12
View File
@@ -56,16 +56,5 @@
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_profile";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_application";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_codec";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_secure";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
?>
+12 -68
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-2025
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -78,12 +78,7 @@
$.ajax({
url: url,
success: function(response){
$("#ajax_response").html(response);
const table = document.getElementById('calls_active');
var row_count = table.rows.length;
if (row_count > 0) { row_count = row_count - 1; }
const calls_active_count = document.getElementById('calls_active_count');
calls_active_count.innerHTML = row_count;
$("#ajax_reponse").html(response);
}
});
timer_id = setTimeout(ajax_get, refresh);
@@ -137,70 +132,19 @@
<?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'];
}
unset($_SESSION['user']['extensions']);
if (is_array($_SESSION['user']['extension'])) {
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
}
}
//create token
$object = new token;
$token = $object->create('/app/calls_active/calls_active_inc.php');
$_SESSION['app']['calls_active']['token']['name'] = $token['name'];
$_SESSION['app']['calls_active']['token']['hash'] = $token['hash'];
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>";
//show the content header
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title']."</b><div id='calls_active_count' class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
if (permission_exists('call_active_eavesdrop') && !empty($user['extensions'])) {
if (sizeof($user['extensions']) > 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $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($user['extensions'])) {
foreach ($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($user['extensions']) == 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".escape($user['extension'][0]['destination'])."\">\n";
}
}
if (permission_exists('call_active_hangup') && $rows) {
echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','id'=>'btn_delete','onclick'=>"refresh_stop(); modal_open('modal-hangup','btn_hangup');"]);
}
if (permission_exists('call_active_all')) {
if ($show == "all") {
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$theme_button_icon_back,'link'=>'calls_active.php','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$theme_button_icon_all,'link'=>'calls_active.php?show=all','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
}
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_active_hangup') && $rows) {
echo modal::create(['id'=>'modal-hangup','type'=>'general','message'=>$text['confirm-hangups'],'actions'=>button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'check','id'=>'btn_hangup','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('hangup'); list_form_submit('form_list');"])]);
}
echo $text['description']."\n";
echo "<br /><br />\n";
//show the content body
echo "<div id='ajax_response'></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>";
//show the footer
require_once "resources/footer.php";
require_once "resources/footer.php";
/*
// deprecated functions for this page
+65 -47
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-2025
Portions created by the Initial Developer are Copyright (C) 2008-2023
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -37,21 +37,6 @@
exit;
}
//get the session settings
$domain_uuid = $_SESSION['domain_uuid'];
$domain_name = $_SESSION['domain_name'];
$user_uuid = $_SESSION['user_uuid'];
$gateways = $_SESSION['gateways'];
$user = $_SESSION['user'];
//initialize the settings object
$settings = new settings(["domain_uuid" => $domain_uuid, "user_uuid" => $user_uuid]);
//get the settings
$template_name = $settings->get('domain', 'template', 'default');
$theme_button_icon_back = $settings->get('theme', 'button_icon_back', '');
$theme_button_icon_all = $settings->get('theme', 'button_icon_all', '');
//add multi-lingual support
$language = new text;
$text = $language->get();
@@ -61,7 +46,7 @@
if ($show != "all") { $show = ''; }
//include theme config for button images
include_once("themes/".$template_name."/config.php");
include_once("themes/".$_SESSION['domain']['template']['name']."/config.php");
//set the command
$switch_cmd = 'show channels as json';
@@ -95,7 +80,7 @@
if (($show == 'all' && permission_exists('call_active_all'))) {
$rows[] = $row;
}
elseif ($row['domain_name'] == $domain_name) {
elseif ($row['domain_name'] == $_SESSION['domain_name']) {
$rows[] = $row;
}
}
@@ -119,6 +104,10 @@
return;
}
//create token
$object = new token;
$token = $object->create('/app/calls_active/calls_active_inc.php');
//add the style
echo "<style>\n";
echo " /* Small screens: Hide columns with class 'hide-small' */\n";
@@ -137,6 +126,49 @@
echo "\n";
echo "</style>\n";
//show the content
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
echo " <span id='refresh_state'>".button::create(['type'=>'button','title'=>$text['label-refresh_pause'],'icon'=>'sync-alt fa-spin','onclick'=>'refresh_stop()'])."</span>";
if (permission_exists('call_active_eavesdrop') && !empty($_SESSION['user']['extensions'])) {
if (sizeof($_SESSION['user']['extensions']) > 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : escape($_REQUEST['eavesdrop_dest']))."\">\n";
echo " <i class='fas fa-headphones' style='margin-left: 15px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'></i>\n";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
if (is_array($_SESSION['user']['extensions'])) {
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".escape($user_extension)."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".escape($user_extension)."</option>\n";
}
}
echo " </select>\n";
}
else if (sizeof($_SESSION['user']['extensions']) == 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".escape($_SESSION['user']['extension'][0]['destination'])."\">\n";
}
}
if (permission_exists('call_active_hangup') && $rows) {
echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','id'=>'btn_delete','onclick'=>"refresh_stop(); modal_open('modal-hangup','btn_hangup');"]);
}
if (permission_exists('call_active_all')) {
if ($show == "all") {
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'link'=>'calls_active.php','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
else {
echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'calls_active.php?show=all','onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']);
}
}
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('call_active_hangup') && $rows) {
echo modal::create(['id'=>'modal-hangup','type'=>'general','message'=>$text['confirm-hangups'],'actions'=>button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'check','id'=>'btn_hangup','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('hangup'); list_form_submit('form_list');"])]);
}
echo $text['description']."\n";
echo "<br /><br />\n";
//show the results
echo "<div id='cmd_reponse'></div>\n";
@@ -144,32 +176,26 @@
echo "<input type='hidden' id='action' name='action' value=''>\n";
echo "<div class='card'>\n";
echo " <table id='calls_active' class='list'>\n";
echo " <table class='list'>\n";
echo " <tr class='list-header'>\n";
if (permission_exists('call_active_hangup')) {
echo " <th class='checkbox'>\n";
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n";
}
if (permission_exists('call_active_profile')) {
echo " <th class='hide-small'>".$text['label-profile']."</th>\n";
}
echo " <th class='hide-small'>".$text['label-profile']."</th>\n";
//echo" <th>".$text['label-created']."</th>\n";
echo " <th>".$text['label-duration']."</th>\n";
if ($show == 'all') {
echo " <th>".$text['label-domain']."</th>\n";
}
//echo " <th>".$text['label-number']."</th>\n";
echo " <th class='hide-small'>".$text['label-cid-name']."</th>\n";
echo " <th>".$text['label-cid-number']."</th>\n";
echo " <th>".$text['label-destination']."</th>\n";
if (permission_exists('call_active_application')) {
echo " <th class='hide-small hide-medium'>".$text['label-app']."</th>\n";
}
if (permission_exists('call_active_codec')) {
echo " <th class='hide-small hide-medium'>".$text['label-codec']."</th>\n";
}
if (permission_exists('call_active_secure')) {
echo " <th class='hide-small hide-medium'>".$text['label-secure']."</th>\n";
}
echo " <th class='hide-small hide-medium'>".$text['label-app']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-codec']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-secure']."</th>\n";
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <th>&nbsp;</th>\n";
}
@@ -198,8 +224,8 @@
$cid_num = str_replace("+", "", $cid_num);
//replace gateway uuid with name
if (is_array($gateways) && sizeof($gateways) > 0) {
foreach ($gateways as $gateway_uuid => $gateway_name) {
if (is_array($_SESSION['gateways']) && sizeof($_SESSION['gateways']) > 0) {
foreach ($_SESSION['gateways'] as $gateway_uuid => $gateway_name) {
$application_data = str_replace($gateway_uuid, $gateway_name, $application_data);
}
}
@@ -228,9 +254,7 @@
echo " <input type='hidden' name='calls[$x][uuid]' value='".escape($uuid)."' />\n";
echo " </td>\n";
}
if (permission_exists('call_active_profile')) {
echo " <td class='hide-small'>".escape($sip_profile)."&nbsp;</td>\n";
}
echo " <td class='hide-small'>".escape($sip_profile)."&nbsp;</td>\n";
//echo " <td>".escape($created)."&nbsp;</td>\n";
echo " <td>".escape($elapsed_time)."</td>\n";
if ($show == 'all') {
@@ -240,19 +264,13 @@
echo " <td class='hide-small'>".escape($cid_name)."&nbsp;</td>\n";
echo " <td>".escape($cid_num)."&nbsp;</td>\n";
echo " <td>".escape($dest)."&nbsp;</td>\n";
if (permission_exists('call_active_application')) {
echo " <td class='hide-small hide-medium' style='max-width: 200px; word-wrap: break-word;'>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
}
if (permission_exists('call_active_codec')) {
echo " <td class='hide-small hide-medium'>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
}
if (permission_exists('call_active_secure')) {
echo " <td class='hide-small hide-medium'>".escape($secure)."&nbsp;</td>\n";
}
echo " <td class='hide-small hide-medium' style='max-width: 200px; word-wrap: break-word;'>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium'>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium'>".escape($secure)."&nbsp;</td>\n";
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <td class='button right' style='padding-right: 0;'>\n";
//eavesdrop
if (permission_exists('call_active_eavesdrop') && $callstate == 'ACTIVE' && !empty($user['extensions']) && !in_array($cid_num, $user['extensions'])) {
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
@@ -273,7 +291,7 @@
echo " </table>\n";
echo "</div>\n";
echo "<input type='hidden' name='".$_SESSION['app']['calls_active']['token']['name']."' value='".$_SESSION['app']['calls_active']['token']['hash']."'>\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n";
?>
-8
View File
@@ -176,13 +176,5 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "SPA PC VLAN ID. Options 0 to 4094.";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "78637de4-ec12-4d41-8c65-39afe50d2b02";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "spa_router_mode";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: 0:Bridge, 1:NAT.";
$y++;
?>
@@ -49,7 +49,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['conference_centers'])) {
@@ -221,7 +221,7 @@
echo th_order_by('conference_center_pin_length', $text['label-conference_center_pin_length'], $order_by, $order, null, "class='center shrink'");
echo th_order_by('conference_center_enabled', $text['label-conference_center_enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('conference_center_description', $text['label-conference_center_description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_center_edit') && $list_row_edit_button) {
if (permission_exists('conference_center_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -229,12 +229,8 @@
if (!empty($conference_centers)) {
$x = 0;
foreach ($conference_centers as $row) {
$list_row_url = '';
if (permission_exists('conference_center_edit')) {
$list_row_url = "conference_center_edit.php?id=".$row['conference_center_uuid'];
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_center_edit') || permission_exists('conference_center_delete')) {
@@ -266,7 +262,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_center_description'])."&nbsp;</td>\n";
if (permission_exists('conference_center_edit') && $list_row_edit_button) {
if (permission_exists('conference_center_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -289,4 +285,3 @@
require_once "resources/footer.php";
?>
+3 -8
View File
@@ -49,7 +49,7 @@
$search = $_GET["search"] ?? null;
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_rooms'])) {
@@ -300,7 +300,7 @@
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
}
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_room_edit') && $list_row_edit_button) {
if (permission_exists('conference_room_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -319,12 +319,8 @@
$participant_pin = substr($participant_pin, 0, 3) ."-". substr($participant_pin, 3, 3) ."-". substr($participant_pin, -3)."\n";
}
$list_row_url = '';
if (permission_exists('conference_room_edit')) {
$list_row_url = "conference_room_edit.php?id=".urlencode($row['conference_room_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) {
@@ -490,7 +486,7 @@
}
echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n";
if (permission_exists('conference_room_edit') && $list_row_edit_button) {
if (permission_exists('conference_room_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -512,4 +508,3 @@
require_once "resources/footer.php";
?>
@@ -45,7 +45,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//set variables from the http values
$order_by = $_GET["order_by"] ?? '' ? $_GET["order_by"] : 'start_epoch';
@@ -152,7 +152,7 @@
echo "<th>".$text['label-time']."</th>\n";
echo th_order_by('start_epoch', $text['label-start'], $order_by, $order);
echo th_order_by('end_epoch', $text['label-end'], $order_by, $order);
if (permission_exists('conference_session_details') && $list_row_edit_button) {
if (permission_exists('conference_session_details') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -191,7 +191,7 @@
echo " <td>".$time_difference."&nbsp;</td>\n";
echo " <td>".$start_date."&nbsp;</td>\n";
echo " <td>".$end_date."&nbsp;</td>\n";
if (permission_exists('conference_session_details') && $list_row_edit_button) {
if (permission_exists('conference_session_details') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -46,7 +46,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_sessions'])) {
@@ -172,7 +172,7 @@
echo th_order_by('profile', $text['label-profile'], $order_by, $order);
//echo th_order_by('recording', $text['label-recording'], $order_by, $order);
echo "<th>".$text['label-tools']."</th>\n";
if ($list_row_edit_button) {
if ($list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -232,7 +232,7 @@
echo "</table>\n";
}
echo " </td>\n";
if ($list_row_edit_button) {
if ($list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -26,6 +26,7 @@ Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/
//define the conference centers class
if (!class_exists('conference_centers')) {
class conference_centers {
/**
@@ -799,7 +800,7 @@ Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
} //class
}
//example conference center
/*
@@ -813,3 +814,5 @@ Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
$result = $conference_center->rooms();
print_r($result);
*/
?>
@@ -5,7 +5,6 @@ $array['dashboard'][$x]['dashboard_uuid'] = 'd1b26c96-6cfd-45ea-824f-0b5e16a9aab
$array['dashboard'][$x]['dashboard_name'] = 'Conference Centers';
$array['dashboard'][$x]['dashboard_path'] = 'dashboard/icon';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-hotel';
$array['dashboard'][$x]['dashboard_icon_color'] = '#5D5CE3';
$array['dashboard'][$x]['dashboard_url'] = '/app/conference_centers/conference_rooms.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
@@ -15,14 +14,14 @@ $array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '#444444';
$array['dashboard'][$x]['dashboard_label_text_color'] = '';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_background_color'] = '#ffffff';
$array['dashboard'][$x]['dashboard_number_text_color'] = '#5d5ce3';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
+3 -2
View File
@@ -27,6 +27,7 @@
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform;
@@ -95,8 +96,8 @@
Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color
Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent
Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba
Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis
Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom
Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis
$height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null;
$wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
}
+1 -1
View File
@@ -32,7 +32,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $settings->get('switch','conf').'/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';
@@ -43,7 +43,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_control_details'])) {
@@ -163,7 +163,7 @@
echo th_order_by('control_action', $text['label-control_action'], $order_by, $order, null, null, $param);
echo th_order_by('control_data', $text['label-control_data'], $order_by, $order, null, "class='pct-50 hide-xs'", $param);
echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center'", $param);
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button) {
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -200,7 +200,7 @@
echo $text['label-'.$row['control_enabled']];
}
echo " </td>\n";
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button) {
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -43,7 +43,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_controls'])) {
@@ -179,7 +179,7 @@
echo th_order_by('control_name', $text['label-control_name'], $order_by, $order);
echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center shrink'");
echo " <th class='hide-sm-dn'>".$text['label-control_description']."</th>\n";
if (permission_exists('conference_control_edit') && $list_row_edit_button) {
if (permission_exists('conference_control_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -215,7 +215,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['control_description'])."</td>\n";
if (permission_exists('conference_control_edit') && $list_row_edit_button) {
if (permission_exists('conference_control_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -26,7 +26,12 @@
/**
* conference_controls class
*
* @method null delete
* @method null toggle
* @method null copy
*/
if (!class_exists('conference_controls')) {
class conference_controls {
/**
@@ -421,3 +426,6 @@
}
}
}
?>
+1 -1
View File
@@ -32,7 +32,7 @@
if ($num_rows == 0) {
//set the directory
$xml_dir = $settings->get('switch','conf').'/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';
@@ -43,7 +43,7 @@
$text = $language->get();
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_profile_params'])) {
@@ -152,7 +152,7 @@
echo th_order_by('profile_param_value', $text['label-profile_param_value'], $order_by, $order, null, "class='pct-40'", $param);
echo th_order_by('profile_param_enabled', $text['label-profile_param_enabled'], $order_by, $order, null, "class='center'", $param);
echo th_order_by('profile_param_description', $text['label-profile_param_description'], $order_by, $order, null, "class='hide-sm-dn'", $param);
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button) {
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -189,7 +189,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_param_description'])."&nbsp;</td>\n";
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button) {
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -45,7 +45,7 @@
$search = $_GET["search"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the http post data
if (!empty($_POST['conference_profiles'])) {
@@ -175,7 +175,7 @@
echo th_order_by('profile_name', $text['label-profile_name'], $order_by, $order);
echo th_order_by('profile_enabled', $text['label-profile_enabled'], $order_by, $order, null, "class='center'");
echo " <th class='hide-sm-dn'>".$text['label-profile_description']."</th>\n";
if (permission_exists('conference_profile_edit') && $list_row_edit_button) {
if (permission_exists('conference_profile_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -211,7 +211,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_description'])."</td>\n";
if (permission_exists('conference_profile_edit') && $list_row_edit_button) {
if (permission_exists('conference_profile_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -26,7 +26,12 @@
/**
* conference_profiles class
*
* @method null delete
* @method null toggle
* @method null copy
*/
if (!class_exists('conference_profiles')) {
class conference_profiles {
/**
@@ -427,3 +432,6 @@
}
}
}
?>
+3 -8
View File
@@ -46,7 +46,7 @@
$show = $_GET["show"] ?? '';
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get posted data
if (!empty($_POST['conferences'])) {
@@ -223,7 +223,7 @@
echo "<th style='text-align: center;'>".$text['label-tools']."</th>\n";
echo th_order_by('conference_enabled', $text['table-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('conference_description', $text['table-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_edit') && $list_row_edit_button) {
if (permission_exists('conference_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -231,12 +231,8 @@
if (!empty($conferences)) {
$x = 0;
foreach($conferences as $row) {
$list_row_url = '';
if (permission_exists('conference_edit')) {
$list_row_url = "conference_edit.php?id=".urlencode($row['conference_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_add') || permission_exists('conference_edit') || permission_exists('conference_delete')) {
@@ -281,7 +277,7 @@
echo $text['label-'.$row['conference_enabled']];
}
echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_description'])."&nbsp;</td>\n";
if (permission_exists('conference_edit') && $list_row_edit_button) {
if (permission_exists('conference_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -305,4 +301,3 @@
require_once "resources/footer.php";
?>
@@ -25,6 +25,7 @@
*/
//define the conferences class
if (!class_exists('conferences')) {
class conferences {
/**
@@ -373,3 +374,6 @@
}
}
}
?>
@@ -5,7 +5,6 @@ $array['dashboard'][$x]['dashboard_uuid'] = 'c3c37d29-b654-4024-8ee4-d752b3e4db4
$array['dashboard'][$x]['dashboard_name'] = 'Conferences';
$array['dashboard'][$x]['dashboard_path'] = 'dashboard/icon';
$array['dashboard'][$x]['dashboard_icon'] = 'fa-comments';
$array['dashboard'][$x]['dashboard_icon_color'] = '#0292ff';
$array['dashboard'][$x]['dashboard_url'] = '/app/conferences/conferences.php';
$array['dashboard'][$x]['dashboard_target'] = 'self';
$array['dashboard'][$x]['dashboard_width'] = '';
@@ -15,14 +14,14 @@ $array['dashboard'][$x]['dashboard_content_text_align'] = '';
$array['dashboard'][$x]['dashboard_content_details'] = '';
$array['dashboard'][$x]['dashboard_chart_type'] = '';
$array['dashboard'][$x]['dashboard_label_enabled'] = 'true';
$array['dashboard'][$x]['dashboard_label_text_color'] = '#444444';
$array['dashboard'][$x]['dashboard_label_text_color'] = '';
$array['dashboard'][$x]['dashboard_label_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_label_background_color'] = '';
$array['dashboard'][$x]['dashboard_label_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_text_color'] = '';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_number_background_color'] = '';
$array['dashboard'][$x]['dashboard_background_color'] = '#ffffff';
$array['dashboard'][$x]['dashboard_number_text_color'] = '#0292FF';
$array['dashboard'][$x]['dashboard_number_text_color_hover'] = '';
$array['dashboard'][$x]['dashboard_background_color'] ='';
$array['dashboard'][$x]['dashboard_background_color_hover'] = '';
$array['dashboard'][$x]['dashboard_detail_background_color'] = '';
$array['dashboard'][$x]['dashboard_column_span'] = '1';
@@ -42,4 +41,3 @@ $array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'admin';
$y++;
?>
+14 -63
View File
@@ -22,7 +22,6 @@ $text['title-active_conferences']['ro-ro'] = "Conferințe active";
$text['title-active_conferences']['ru-ru'] = "Активные конференции";
$text['title-active_conferences']['sv-se'] = "Aktiva Konferenser";
$text['title-active_conferences']['uk-ua'] = "Активні кноференції";
$text['title-active_conferences']['tr-tr'] = "Aktif Konferanslar";
$text['title-active_conferences']['zh-cn'] = "活动会议";
$text['title-active_conferences']['ja-jp'] = "アクティブな会議";
$text['title-active_conferences']['ko-kr'] = "활성 회의";
@@ -49,23 +48,22 @@ $text['message-denied']['ro-ro'] = "acces interzis";
$text['message-denied']['ru-ru'] = "Доступ запрещён";
$text['message-denied']['sv-se'] = "Tillträde Nekat";
$text['message-denied']['uk-ua'] = "в доступі відмовлено";
$text['message-denied']['tr-tr'] = "erişim engellendi";
$text['message-denied']['zh-cn'] = "拒绝访问";
$text['message-denied']['ja-jp'] = "アクセス拒否";
$text['message-denied']['ko-kr'] = "접근 불가";
$text['message-connection']['en-us'] = "Connection to Event Socket failed.";
$text['message-connection']['en-gb'] = "Connection to Event Socket failed.";
$text['message-connection']['ar-eg'] = "فشل الاتصال بمقبس الحدث.";
$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'] = "Η σύνδεση με την υποδοχή συμβάντος απέτυχε.";
$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.";
$text['message-connection']['fr-fr'] = "Connexion à l'Event Socket en echec.";
$text['message-connection']['he-il'] = "החיבור לשקע אירועים נכשל.";
$text['message-connection']['he-il'] = "החיבור ל-Event Socket נכשל.";
$text['message-connection']['it-it'] = "Connessione all'Event Socket fallita.";
$text['message-connection']['ka-ge'] = "მოვლენების სოკეტთან მიერთება არ განხორციელდა.";
$text['message-connection']['nl-nl'] = "Verbinding met Event-Socket mislukt";
@@ -76,7 +74,6 @@ $text['message-connection']['ro-ro'] = "Conexiunea la Event Socket a eșuat.";
$text['message-connection']['ru-ru'] = "Подключение к Event Socket неудачно.";
$text['message-connection']['sv-se'] = "Anslutning till Händelse misslyckades";
$text['message-connection']['uk-ua'] = "Помилка підключення до сокета подій.";
$text['message-connection']['tr-tr'] = "Olay Soketine bağlantı başarısız oldu.";
$text['message-connection']['zh-cn'] = "与事件套接字的连接失败。";
$text['message-connection']['ja-jp'] = "イベントソケットへの接続に失敗しました。";
$text['message-connection']['ko-kr'] = "이벤트 소켓에 연결하지 못했습니다.";
@@ -103,7 +100,6 @@ $text['message-click_to_unmute']['ro-ro'] = "Faceți clic pentru a activa sunetu
$text['message-click_to_unmute']['ru-ru'] = "Нажмите, чтобы включить микрофон участника";
$text['message-click_to_unmute']['sv-se'] = "Klicka för att Aktivera Deltagares Mikrofon";
$text['message-click_to_unmute']['uk-ua'] = "Натисніть, щоб включити учасника";
$text['message-click_to_unmute']['tr-tr'] = "Üyenin Sesini Açmak İçin Tıklayın";
$text['message-click_to_unmute']['zh-cn'] = "单击以取消静音成员";
$text['message-click_to_unmute']['ja-jp'] = "クリックしてメンバーのミュートを解除";
$text['message-click_to_unmute']['ko-kr'] = "회원을 음소거 해제하려면 클릭하세요.";
@@ -130,7 +126,6 @@ $text['message-click_to_mute']['ro-ro'] = "Faceți clic pentru a dezactiva sunet
$text['message-click_to_mute']['ru-ru'] = "Нажмите, чтобы отключить микрофон участника";
$text['message-click_to_mute']['sv-se'] = "Klicka för att Stänga Av Deltagares Mikrofon";
$text['message-click_to_mute']['uk-ua'] = "Натисніть, щоб вилючити учасника";
$text['message-click_to_mute']['tr-tr'] = "Üyeyi sessize almak için tıklayın";
$text['message-click_to_mute']['zh-cn'] = "点击静音成员";
$text['message-click_to_mute']['ja-jp'] = "クリックしてメンバーをミュート";
$text['message-click_to_mute']['ko-kr'] = "회원을 음소거하려면 클릭하세요.";
@@ -157,7 +152,6 @@ $text['label-conference_center_room']['ro-ro'] = "Sala Centrului de Conferințe"
$text['label-conference_center_room']['ru-ru'] = "Конференц-центр";
$text['label-conference_center_room']['sv-se'] = "Konferenscenter";
$text['label-conference_center_room']['uk-ua'] = "Конференц-центр";
$text['label-conference_center_room']['tr-tr'] = "Konferans Merkezi Odası";
$text['label-conference_center_room']['zh-cn'] = "会议中心室";
$text['label-conference_center_room']['ja-jp'] = "カンファレンスセンタールーム";
$text['label-conference_center_room']['ko-kr'] = "컨퍼런스 센터룸";
@@ -184,7 +178,6 @@ $text['label-yes']['ro-ro'] = "da";
$text['label-yes']['ru-ru'] = "Да";
$text['label-yes']['sv-se'] = "Ja";
$text['label-yes']['uk-ua'] = "Так";
$text['label-yes']['tr-tr'] = "Evet";
$text['label-yes']['zh-cn'] = "是的";
$text['label-yes']['ja-jp'] = "はい";
$text['label-yes']['ko-kr'] = "예";
@@ -211,7 +204,6 @@ $text['label-volume']['ro-ro'] = "Volum";
$text['label-volume']['ru-ru'] = "Громкость";
$text['label-volume']['sv-se'] = "Volym";
$text['label-volume']['uk-ua'] = "Обсяг";
$text['label-volume']['tr-tr'] = "Hacim";
$text['label-volume']['zh-cn'] = "体积";
$text['label-volume']['ja-jp'] = "音量";
$text['label-volume']['ko-kr'] = "용량";
@@ -238,7 +230,6 @@ $text['label-video']['ro-ro'] = "Video";
$text['label-video']['ru-ru'] = "Видео";
$text['label-video']['sv-se'] = "Video";
$text['label-video']['uk-ua'] = "Відео";
$text['label-video']['tr-tr'] = "Video";
$text['label-video']['zh-cn'] = "视频";
$text['label-video']['ja-jp'] = "ビデオ";
$text['label-video']['ko-kr'] = "동영상";
@@ -264,8 +255,7 @@ $text['label-unmute-all']['pt-pt'] = "Todos com som";
$text['label-unmute-all']['ro-ro'] = "Activați sunetul pe toate";
$text['label-unmute-all']['ru-ru'] = "Включить все микрофоны";
$text['label-unmute-all']['sv-se'] = "Aktivera Allas Mikrofoner";
$text['label-unmute-all']['uk-ua'] = "Увімкнути всі";
$text['label-unmute-all']['tr-tr'] = "Tümünü sessize al";
$text['label-unmute-all']['uk-ua'] = "Unmute All ";
$text['label-unmute-all']['zh-cn'] = "全部取消静音";
$text['label-unmute-all']['ja-jp'] = "すべてミュート解除";
$text['label-unmute-all']['ko-kr'] = "모두 음소거 해제";
@@ -291,8 +281,7 @@ $text['label-unmute']['pt-pt'] = "Com som";
$text['label-unmute']['ro-ro'] = "nori";
$text['label-unmute']['ru-ru'] = "Включить микрофон";
$text['label-unmute']['sv-se'] = "Mikrofon Aktiv";
$text['label-unmute']['uk-ua'] = "увімкнено звук";
$text['label-unmute']['tr-tr'] = "Unmute";
$text['label-unmute']['uk-ua'] = "Unmute ";
$text['label-unmute']['zh-cn'] = "云";
$text['label-unmute']['ja-jp'] = "雲霧て";
$text['label-unmute']['ko-kr'] = "구름 안개";
@@ -319,7 +308,6 @@ $text['label-unlock']['ro-ro'] = "Deblocați";
$text['label-unlock']['ru-ru'] = "Разблокировать";
$text['label-unlock']['sv-se'] = "Lås Upp";
$text['label-unlock']['uk-ua'] = "Розблокувати";
$text['label-unlock']['tr-tr'] = "Kilidini aç";
$text['label-unlock']['zh-cn'] = "开锁";
$text['label-unlock']['ja-jp'] = "ロック解除";
$text['label-unlock']['ko-kr'] = "터놓다";
@@ -346,7 +334,6 @@ $text['label-undeaf']['ro-ro'] = "nesurde";
$text['label-undeaf']['ru-ru'] = "Undeaf";
$text['label-undeaf']['sv-se'] = "Hörbarhet";
$text['label-undeaf']['uk-ua'] = "Неглухий";
$text['label-undeaf']['tr-tr'] = "Sağır olmayan";
$text['label-undeaf']['zh-cn'] = "不聋";
$text['label-undeaf']['ja-jp'] = "耳が聞こえない";
$text['label-undeaf']['ko-kr'] = "귀머거리";
@@ -373,7 +360,6 @@ $text['label-tools']['ro-ro'] = "Instrumente";
$text['label-tools']['ru-ru'] = "Утилиты";
$text['label-tools']['sv-se'] = "Verktyg";
$text['label-tools']['uk-ua'] = "Параметри";
$text['label-tools']['tr-tr'] = "Aletler";
$text['label-tools']['zh-cn'] = "工具";
$text['label-tools']['ja-jp'] = "ツール";
$text['label-tools']['ko-kr'] = "도구";
@@ -400,7 +386,6 @@ $text['label-tool']['ro-ro'] = "Instrumente";
$text['label-tool']['ru-ru'] = "Утилиты";
$text['label-tool']['sv-se'] = "Verktyg";
$text['label-tool']['uk-ua'] = "Параметри";
$text['label-tool']['tr-tr'] = "Aletler";
$text['label-tool']['zh-cn'] = "工具";
$text['label-tool']['ja-jp'] = "ツール";
$text['label-tool']['ko-kr'] = "도구";
@@ -427,7 +412,6 @@ $text['label-talking']['ro-ro'] = "Vorbind";
$text['label-talking']['ru-ru'] = "Разговривайте";
$text['label-talking']['sv-se'] = "Talande";
$text['label-talking']['uk-ua'] = "Розмова";
$text['label-talking']['tr-tr'] = "Konuşmak";
$text['label-talking']['zh-cn'] = "说";
$text['label-talking']['ja-jp'] = "おしゃべり";
$text['label-talking']['ko-kr'] = "말하는";
@@ -454,7 +438,6 @@ $text['label-speak']['ro-ro'] = "Vorbi";
$text['label-speak']['ru-ru'] = "Говорите";
$text['label-speak']['sv-se'] = "Tala";
$text['label-speak']['uk-ua'] = "Говорити";
$text['label-speak']['tr-tr'] = "Konuşmak";
$text['label-speak']['zh-cn'] = "说话";
$text['label-speak']['ja-jp'] = "話す";
$text['label-speak']['ko-kr'] = "말하다";
@@ -481,7 +464,6 @@ $text['label-recording']['ro-ro'] = "Înregistrare";
$text['label-recording']['ru-ru'] = "Запись";
$text['label-recording']['sv-se'] = "Inspelning";
$text['label-recording']['uk-ua'] = "Запис";
$text['label-recording']['tr-tr'] = "Kayıt";
$text['label-recording']['zh-cn'] = "记录";
$text['label-recording']['ja-jp'] = "録音";
$text['label-recording']['ko-kr'] = "녹음";
@@ -508,7 +490,6 @@ $text['label-quiet']['ro-ro'] = "Liniște";
$text['label-quiet']['ru-ru'] = "Тихо";
$text['label-quiet']['sv-se'] = "Tyst";
$text['label-quiet']['uk-ua'] = "Спокійно";
$text['label-quiet']['tr-tr'] = "Sessizlik";
$text['label-quiet']['zh-cn'] = "安静的";
$text['label-quiet']['ja-jp'] = "静かな";
$text['label-quiet']['ko-kr'] = "조용한";
@@ -535,7 +516,6 @@ $text['label-participant-pin']['ro-ro'] = "PIN participant";
$text['label-participant-pin']['ru-ru'] = "PIN участника";
$text['label-participant-pin']['sv-se'] = "Pinkod Deltagare";
$text['label-participant-pin']['uk-ua'] = "PIN учасника";
$text['label-participant-pin']['tr-tr'] = "Katılımcı PIN'i";
$text['label-participant-pin']['zh-cn'] = "参与者密码";
$text['label-participant-pin']['ja-jp'] = "参加者暗証番号";
$text['label-participant-pin']['ko-kr'] = "참가자 PIN";
@@ -562,7 +542,6 @@ $text['label-participant']['ro-ro'] = "Participant";
$text['label-participant']['ru-ru'] = "Участник";
$text['label-participant']['sv-se'] = "Deltagare";
$text['label-participant']['uk-ua'] = "Учасник";
$text['label-participant']['tr-tr'] = "Katılımcı";
$text['label-participant']['zh-cn'] = "参与者";
$text['label-participant']['ja-jp'] = "参加者";
$text['label-participant']['ko-kr'] = "참가자";
@@ -589,7 +568,6 @@ $text['label-not-recording']['ro-ro'] = "Nu se înregistrează";
$text['label-not-recording']['ru-ru'] = "Не записывается";
$text['label-not-recording']['sv-se'] = "Spelar inte in";
$text['label-not-recording']['uk-ua'] = "Не записується";
$text['label-not-recording']['tr-tr'] = "Kayıt Yapılmıyor";
$text['label-not-recording']['zh-cn'] = "不录音";
$text['label-not-recording']['ja-jp'] = "記録しない";
$text['label-not-recording']['ko-kr'] = "녹음하지 않음";
@@ -615,8 +593,7 @@ $text['label-no']['pt-pt'] = "Não";
$text['label-no']['ro-ro'] = "Nu";
$text['label-no']['ru-ru'] = "Нет";
$text['label-no']['sv-se'] = "Nej";
$text['label-no']['uk-ua'] = "немає";
$text['label-no']['tr-tr'] = "HAYIR";
$text['label-no']['uk-ua'] = "Ні";
$text['label-no']['zh-cn'] = "不";
$text['label-no']['ja-jp'] = "いいえ";
$text['label-no']['ko-kr'] = "아니요";
@@ -643,7 +620,6 @@ $text['label-mute-all-alt']['ro-ro'] = "Dezactivați sunetul tuturor participan
$text['label-mute-all-alt']['ru-ru'] = "Отключить микрофоны всем участникам.";
$text['label-mute-all-alt']['sv-se'] = "Stäng av Deltagares mikrofon";
$text['label-mute-all-alt']['uk-ua'] = "Вимкнути звук для всіх учасників.";
$text['label-mute-all-alt']['tr-tr'] = "Tüm Katılımcıları Sessize Al.";
$text['label-mute-all-alt']['zh-cn'] = "将所有与会者静音。";
$text['label-mute-all-alt']['ja-jp'] = "すべての参加者をミュートします。";
$text['label-mute-all-alt']['ko-kr'] = "모든 참가자를 음소거합니다.";
@@ -670,7 +646,6 @@ $text['label-mute-all']['ro-ro'] = "Dezactivați toate";
$text['label-mute-all']['ru-ru'] = "Отключить все микрофоны";
$text['label-mute-all']['sv-se'] = "Stäng av Allas mikrofon";
$text['label-mute-all']['uk-ua'] = "Вимкнути всі";
$text['label-mute-all']['tr-tr'] = "Tümünü Sessize Al";
$text['label-mute-all']['zh-cn'] = "全部静音";
$text['label-mute-all']['ja-jp'] = "すべてミュート";
$text['label-mute-all']['ko-kr'] = "모두 음소거";
@@ -697,7 +672,6 @@ $text['label-mute']['ro-ro'] = "Mut";
$text['label-mute']['ru-ru'] = "Отключить микрофон";
$text['label-mute']['sv-se'] = "Stäng av mikrofon";
$text['label-mute']['uk-ua'] = "Вимкнути звук";
$text['label-mute']['tr-tr'] = "Sesini kapatmak";
$text['label-mute']['zh-cn'] = "沉默的";
$text['label-mute']['ja-jp'] = "無音";
$text['label-mute']['ko-kr'] = "무음";
@@ -724,7 +698,6 @@ $text['label-hand_raised']['ro-ro'] = "Mâna Ridicată";
$text['label-hand_raised']['ru-ru'] = "Поднятая рука";
$text['label-hand_raised']['sv-se'] = "Upphöjd hand";
$text['label-hand_raised']['uk-ua'] = "Піднята рука";
$text['label-hand_raised']['tr-tr'] = "El Kaldırıldı";
$text['label-hand_raised']['zh-cn'] = "举手";
$text['label-hand_raised']['ja-jp'] = "挙手";
$text['label-hand_raised']['ko-kr'] = "제기 손";
@@ -751,7 +724,6 @@ $text['label-moderator']['ro-ro'] = "Moderator";
$text['label-moderator']['ru-ru'] = "Модератор";
$text['label-moderator']['sv-se'] = "Värd";
$text['label-moderator']['uk-ua'] = "Модератор";
$text['label-moderator']['tr-tr'] = "Moderatör";
$text['label-moderator']['zh-cn'] = "版主";
$text['label-moderator']['ja-jp'] = "モデレータ";
$text['label-moderator']['ko-kr'] = "중재자";
@@ -778,7 +750,6 @@ $text['label-message']['ro-ro'] = "Mesaj";
$text['label-message']['ru-ru'] = "Сообщение";
$text['label-message']['sv-se'] = "Meddelande";
$text['label-message']['uk-ua'] = "Повідомлення";
$text['label-message']['tr-tr'] = "Mesaj";
$text['label-message']['zh-cn'] = "信息";
$text['label-message']['ja-jp'] = "メッセージ";
$text['label-message']['ko-kr'] = "메시지";
@@ -799,13 +770,12 @@ $text['label-members']['it-it'] = "Membri";
$text['label-members']['ka-ge'] = "მონაწილე";
$text['label-members']['nl-nl'] = "Deelnemers";
$text['label-members']['pl-pl'] = "Uczestnicy";
$text['label-members']['pt-br'] = "Membros";
$text['label-members']['pt-br'] = "Total";
$text['label-members']['pt-pt'] = "Deputados";
$text['label-members']['ro-ro'] = "Membrii";
$text['label-members']['ru-ru'] = "Участники";
$text['label-members']['sv-se'] = "Deltagare";
$text['label-members']['uk-ua'] = "Учасники";
$text['label-members']['tr-tr'] = "Üyeler";
$text['label-members']['zh-cn'] = "成员";
$text['label-members']['ja-jp'] = "メンバー";
$text['label-members']['ko-kr'] = "회원";
@@ -832,7 +802,6 @@ $text['label-member-count']['ro-ro'] = "Număr de membri";
$text['label-member-count']['ru-ru'] = "Количество участников";
$text['label-member-count']['sv-se'] = "Antal Deltagare";
$text['label-member-count']['uk-ua'] = "Кількість учасиків";
$text['label-member-count']['tr-tr'] = "Üye Sayısı";
$text['label-member-count']['zh-cn'] = "会员人数";
$text['label-member-count']['ja-jp'] = "メンバー数";
$text['label-member-count']['ko-kr'] = "회원 수";
@@ -859,7 +828,6 @@ $text['label-lock']['ro-ro'] = "Lacăt";
$text['label-lock']['ru-ru'] = "Заблокировать";
$text['label-lock']['sv-se'] = "Lås";
$text['label-lock']['uk-ua'] = "Блокувати";
$text['label-lock']['tr-tr'] = "Kilit";
$text['label-lock']['zh-cn'] = "锁";
$text['label-lock']['ja-jp'] = "ロック";
$text['label-lock']['ko-kr'] = "잠그다";
@@ -879,14 +847,13 @@ $text['label-kick']['he-il'] = "בְּעִיטָה";
$text['label-kick']['it-it'] = "Espelli";
$text['label-kick']['ka-ge'] = "გაგდება";
$text['label-kick']['nl-nl'] = "Er uittrappen";
$text['label-kick']['pl-pl'] = "Rzut";
$text['label-kick']['pl-pl'] = "Kick ";
$text['label-kick']['pt-br'] = "Ejetar";
$text['label-kick']['pt-pt'] = "Ejectar";
$text['label-kick']['ro-ro'] = "Lovitură";
$text['label-kick']['ru-ru'] = "Выкинуть";
$text['label-kick']['sv-se'] = "Sparka Ut";
$text['label-kick']['uk-ua'] = "удар ногою";
$text['label-kick']['tr-tr'] = "Tekme atmak";
$text['label-kick']['zh-cn'] = "踢";
$text['label-kick']['ja-jp'] = "キック";
$text['label-kick']['ko-kr'] = "발 차기";
@@ -913,7 +880,6 @@ $text['label-joined']['ro-ro'] = "S-a alăturat";
$text['label-joined']['ru-ru'] = "Подключился";
$text['label-joined']['sv-se'] = "Blev medlem";
$text['label-joined']['uk-ua'] = "Приєднався";
$text['label-joined']['tr-tr'] = "Katıldı";
$text['label-joined']['zh-cn'] = "已加入";
$text['label-joined']['ja-jp'] = "参加しました";
$text['label-joined']['ko-kr'] = "가입";
@@ -940,7 +906,6 @@ $text['label-interactive']['ro-ro'] = "Conferință interactivă";
$text['label-interactive']['ru-ru'] = "Интерактивная конференция";
$text['label-interactive']['sv-se'] = "Interaktiv Konferens";
$text['label-interactive']['uk-ua'] = "Інтерактивна конференція";
$text['label-interactive']['tr-tr'] = "Etkileşimli Konferans";
$text['label-interactive']['zh-cn'] = "互动会议";
$text['label-interactive']['ja-jp'] = "インタラクティブな会議";
$text['label-interactive']['ko-kr'] = "인터랙티브 컨퍼런스";
@@ -967,7 +932,6 @@ $text['label-id']['ro-ro'] = "ID";
$text['label-id']['ru-ru'] = "ID";
$text['label-id']['sv-se'] = "ID";
$text['label-id']['uk-ua'] = "ID";
$text['label-id']['tr-tr'] = "ID";
$text['label-id']['zh-cn'] = "ID";
$text['label-id']['ja-jp'] = "ID";
$text['label-id']['ko-kr'] = "ID";
@@ -994,7 +958,6 @@ $text['label-hear']['ro-ro'] = "Auzi";
$text['label-hear']['ru-ru'] = "Слушать";
$text['label-hear']['sv-se'] = "Höra";
$text['label-hear']['uk-ua'] = "Почуйте";
$text['label-hear']['tr-tr'] = "Duymak";
$text['label-hear']['zh-cn'] = "听到";
$text['label-hear']['ja-jp'] = "聞く";
$text['label-hear']['ko-kr'] = "듣다";
@@ -1008,8 +971,8 @@ $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'] = "Gagner";
$text['label-gain']['fr-fr'] = "Gagner";
$text['label-gain']['fr-ca'] = "Gain";
$text['label-gain']['fr-fr'] = "Gain";
$text['label-gain']['he-il'] = "לְהַשִׂיג";
$text['label-gain']['it-it'] = "Guadagno";
$text['label-gain']['ka-ge'] = "გაძლიერება";
@@ -1021,7 +984,6 @@ $text['label-gain']['ro-ro'] = "Câştig";
$text['label-gain']['ru-ru'] = "Усиление";
$text['label-gain']['sv-se'] = "Förstärka";
$text['label-gain']['uk-ua'] = "посилення";
$text['label-gain']['tr-tr'] = "Kazanmak";
$text['label-gain']['zh-cn'] = "获得";
$text['label-gain']['ja-jp'] = "得";
$text['label-gain']['ko-kr'] = "얻다";
@@ -1043,12 +1005,11 @@ $text['label-floor']['ka-ge'] = "აქვს იატაკი(Has Floor)";
$text['label-floor']['nl-nl'] = "Heeft het woord";
$text['label-floor']['pl-pl'] = "Posiada piętro";
$text['label-floor']['pt-br'] = "Derrubar";
$text['label-floor']['pt-pt'] = "Tem Piso";
$text['label-floor']['pt-pt'] = "Floor";
$text['label-floor']['ro-ro'] = "Are podea";
$text['label-floor']['ru-ru'] = "Имеет пол";
$text['label-floor']['ru-ru'] = "Has Floor";
$text['label-floor']['sv-se'] = "Har Ordet";
$text['label-floor']['uk-ua'] = "Має Поверх";
$text['label-floor']['tr-tr'] = "Zemini Var";
$text['label-floor']['zh-cn'] = "有楼层";
$text['label-floor']['ja-jp'] = "床あり";
$text['label-floor']['ko-kr'] = "바닥 있음";
@@ -1075,7 +1036,6 @@ $text['label-energy']['ro-ro'] = "Energie";
$text['label-energy']['ru-ru'] = "Энергия";
$text['label-energy']['sv-se'] = "Energi";
$text['label-energy']['uk-ua'] = "Енергія";
$text['label-energy']['tr-tr'] = "Enerji";
$text['label-energy']['zh-cn'] = "活力";
$text['label-energy']['ja-jp'] = "エネルギー";
$text['label-energy']['ko-kr'] = "에너지";
@@ -1102,7 +1062,6 @@ $text['label-end-conference']['ro-ro'] = "Încheierea conferinței";
$text['label-end-conference']['ru-ru'] = "Закончить конференцию";
$text['label-end-conference']['sv-se'] = "Avsluta Konferens";
$text['label-end-conference']['uk-ua'] = "Завершити конференцію";
$text['label-end-conference']['tr-tr'] = "Konferans Sonu";
$text['label-end-conference']['zh-cn'] = "结束会议";
$text['label-end-conference']['ja-jp'] = "会議終了";
$text['label-end-conference']['ko-kr'] = "컨퍼런스 종료";
@@ -1126,10 +1085,9 @@ $text['label-deaf']['pl-pl'] = "Głuchy";
$text['label-deaf']['pt-br'] = "Ensurdecer ";
$text['label-deaf']['pt-pt'] = "Ensurdecer";
$text['label-deaf']['ro-ro'] = "Surd";
$text['label-deaf']['ru-ru'] = "Глухой";
$text['label-deaf']['ru-ru'] = "Deaf";
$text['label-deaf']['sv-se'] = "Hör inte";
$text['label-deaf']['uk-ua'] = "Глухий";
$text['label-deaf']['tr-tr'] = "Sağır";
$text['label-deaf']['zh-cn'] = "聋";
$text['label-deaf']['ja-jp'] = "聴覚障がい";
$text['label-deaf']['ko-kr'] = "청각 장애인";
@@ -1156,7 +1114,6 @@ $text['label-cid-num']['ro-ro'] = "Număr CID";
$text['label-cid-num']['ru-ru'] = "Номер Caller ID";
$text['label-cid-num']['sv-se'] = "CID, nummerpresentation";
$text['label-cid-num']['uk-ua'] = "CID Номер";
$text['label-cid-num']['tr-tr'] = "CID Numarası";
$text['label-cid-num']['zh-cn'] = "来电号码";
$text['label-cid-num']['ja-jp'] = "CID 番号";
$text['label-cid-num']['ko-kr'] = "CID 번호";
@@ -1183,7 +1140,6 @@ $text['label-cid-name']['ro-ro'] = "Nume CID";
$text['label-cid-name']['ru-ru'] = "CID Имя";
$text['label-cid-name']['sv-se'] = "CID, Namnpresentation";
$text['label-cid-name']['uk-ua'] = "CID Ім’я";
$text['label-cid-name']['tr-tr'] = "CID Adı";
$text['label-cid-name']['zh-cn'] = "客户ID名称";
$text['label-cid-name']['ja-jp'] = "CID名";
$text['label-cid-name']['ko-kr'] = "CID 이름";
@@ -1210,7 +1166,6 @@ $text['label-capabilities']['ro-ro'] = "Capabilități";
$text['label-capabilities']['ru-ru'] = "Возможности";
$text['label-capabilities']['sv-se'] = "Möjligheter";
$text['label-capabilities']['uk-ua'] = "Можливості";
$text['label-capabilities']['tr-tr'] = "Yetenekler";
$text['label-capabilities']['zh-cn'] = "能力";
$text['label-capabilities']['ja-jp'] = "機能";
$text['label-capabilities']['ko-kr'] = "기능";
@@ -1237,7 +1192,6 @@ $text['description-interactive']['ro-ro'] = "Utilizați aceasta pentru a monitor
$text['description-interactive']['ru-ru'] = "Используйте это, чтобы наблюдать и взаимодействовать с участниками конференции.";
$text['description-interactive']['sv-se'] = "Använd detta för att Monitorera och Interagera med deltagare i Konferensen";
$text['description-interactive']['uk-ua'] = "Використовуйте це для моніторингу та взаємодії з учасниками конференції.";
$text['description-interactive']['tr-tr'] = "Bunu konferans üyelerini izlemek ve onlarla etkileşim kurmak için kullanın.";
$text['description-interactive']['zh-cn'] = "使用它来监控会议成员并与之互动。";
$text['description-interactive']['ja-jp'] = "これを使用して、会議のメンバーを監視したり、メンバーと対話したりできます。";
$text['description-interactive']['ko-kr'] = "이를 사용하여 회의 구성원을 모니터링하고 상호 작용합니다.";
@@ -1264,7 +1218,6 @@ $text['description-active']['ro-ro'] = "Listați toate conferințele care sunt a
$text['description-active']['ru-ru'] = "Список всех активных конференций с по крайней мере одним участником.";
$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']['tr-tr'] = "Şu anda bir veya daha fazla üyesi olan aktif tüm konferansları listeleyin.";
$text['description-active']['zh-cn'] = "列出当前有一名或多名成员参加的所有会议。";
$text['description-active']['ja-jp'] = "1 人以上のメンバーと現在アクティブなすべての会議を一覧表示します。";
$text['description-active']['ko-kr'] = "현재 한 명 이상의 구성원과 함께 활성화된 모든 회의를 나열합니다.";
@@ -1291,7 +1244,6 @@ $text['button-stop-rec']['ro-ro'] = "Opriți înregistrarea";
$text['button-stop-rec']['ru-ru'] = "Остановить запись";
$text['button-stop-rec']['sv-se'] = "Stoppa Inspelning";
$text['button-stop-rec']['uk-ua'] = "Зупинити";
$text['button-stop-rec']['tr-tr'] = "Kaydı Durdur";
$text['button-stop-rec']['zh-cn'] = "停止记录";
$text['button-stop-rec']['ja-jp'] = "記録の停止";
$text['button-stop-rec']['ko-kr'] = "기록 중지";
@@ -1310,7 +1262,7 @@ $text['button-start-rec']['fr-fr'] = "Commencer l'Enregistrement";
$text['button-start-rec']['he-il'] = "התחל להקליט";
$text['button-start-rec']['it-it'] = "Avvia Registrazione";
$text['button-start-rec']['ka-ge'] = "ჩაწერის დაწყება";
$text['button-start-rec']['nl-nl'] = "Startrecord";
$text['button-start-rec']['nl-nl'] = "Start opname";
$text['button-start-rec']['pl-pl'] = "Początek nagrywania";
$text['button-start-rec']['pt-br'] = "Iniciar gravação";
$text['button-start-rec']['pt-pt'] = "Começar gravação";
@@ -1318,7 +1270,6 @@ $text['button-start-rec']['ro-ro'] = "Începeți înregistrarea";
$text['button-start-rec']['ru-ru'] = "Включить запись";
$text['button-start-rec']['sv-se'] = "Starta Inspelning";
$text['button-start-rec']['uk-ua'] = "Записувати";
$text['button-start-rec']['tr-tr'] = "Kaydı Başlat";
$text['button-start-rec']['zh-cn'] = "开始录制";
$text['button-start-rec']['ja-jp'] = "記録開始";
$text['button-start-rec']['ko-kr'] = "기록 시작";
@@ -144,7 +144,7 @@
echo " <td>".escape($conference_extension)."</td>\n";
echo " <td>".escape($participant_pin)."</td>\n";
echo " <td class='center'>".escape($member_count)."</td>\n";
if (permission_exists('conference_interactive_view') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (permission_exists('conference_interactive_view') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -1793,31 +1793,6 @@ $text['message-uploaded']['zh-cn'] = "文件已上传";
$text['message-uploaded']['ja-jp'] = "ファイルがアップロードされました";
$text['message-uploaded']['ko-kr'] = "업로드된 파일";
$text['message-speed_dial_exists']['en-us'] = "Speed Dial Number Already Exists";
$text['message-speed_dial_exists']['en-gb'] = "Speed Dial Number Already Exists";
$text['message-speed_dial_exists']['ar-eg'] = "رقم الاتصال السريع موجود بالفعل";
$text['message-speed_dial_exists']['de-at'] = "Kurzwahlnummer existiert bereits";
$text['message-speed_dial_exists']['de-ch'] = "Kurzwahlnummer existiert bereits";
$text['message-speed_dial_exists']['de-de'] = "Kurzwahlnummer existiert bereits";
$text['message-speed_dial_exists']['es-cl'] = "El número de marcación rápida ya existe";
$text['message-speed_dial_exists']['es-mx'] = "El número de marcación rápida ya existe";
$text['message-speed_dial_exists']['fr-ca'] = "Le numéro abrégé existe déjà";
$text['message-speed_dial_exists']['fr-fr'] = "Le numéro de numérotation rapide existe déjà";
$text['message-speed_dial_exists']['he-il'] = "מספר חיוג מהיר כבר קיים";
$text['message-speed_dial_exists']['it-it'] = "Il numero di selezione rapida esiste già";
$text['message-speed_dial_exists']['ka-ge'] = "სწრაფი აკრეფის ნომერი უკვე არსებობს";
$text['message-speed_dial_exists']['nl-nl'] = "Snelkiesnummer bestaat al";
$text['message-speed_dial_exists']['pl-pl'] = "Numer szybkiego wybierania już istnieje";
$text['message-speed_dial_exists']['pt-br'] = "Número de discagem rápida já existe";
$text['message-speed_dial_exists']['pt-pt'] = "O número de marcação rápida já existe";
$text['message-speed_dial_exists']['ro-ro'] = "Numărul de apelare rapidă există deja";
$text['message-speed_dial_exists']['ru-ru'] = "Номер быстрого набора уже существует";
$text['message-speed_dial_exists']['sv-se'] = "Snabbuppringningsnummer finns redan";
$text['message-speed_dial_exists']['uk-ua'] = "Номер швидкого набору вже існує";
$text['message-speed_dial_exists']['zh-cn'] = "快速拨号号码已存在";
$text['message-speed_dial_exists']['ja-jp'] = "短縮ダイヤル番号は既に存在します";
$text['message-speed_dial_exists']['ko-kr'] = "단축번호가 이미 존재합니다";
$text['label-voice']['en-us'] = "Voice";
$text['label-voice']['en-gb'] = "Voice";
$text['label-voice']['ar-eg'] = "صوت";
@@ -29,7 +29,7 @@
$apps[$x]['menu'][$y]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][$y]['category'] = "internal";
$apps[$x]['menu'][$y]['icon'] = "";
$apps[$x]['menu'][$y]['path'] = "/core/contacts/contacts.php";
$apps[$x]['menu'][$y]['path'] = "/app/contacts/contacts.php";
$apps[$x]['menu'][$y]['order'] = "";
$apps[$x]['menu'][$y]['groups'][] = "admin";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//set the uuid
if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
@@ -88,12 +88,8 @@
$x = 0;
foreach ($contact_addresses as $row) {
$map_query = $row['address_street']." ".$row['address_extended'].", ".$row['address_locality'].", ".$row['address_region'].", ".$row['address_region'].", ".$row['address_postal_code'];
$list_row_url = '';
if (permission_exists('contact_address_edit')) {
$list_row_url = "contact_address_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_address_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_address_delete')) {
@@ -127,4 +123,3 @@
}
?>
@@ -26,7 +26,6 @@
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
//add multi-lingual support
$language = new text;
@@ -35,7 +34,6 @@
//get attachment uuid
$contact_attachment_uuid = $_GET['id'] ?? '';
$action = $_GET['action'] ?? '';
$session_id = $_GET['sid'] ?? '';
//get media
if (!empty($contact_attachment_uuid) && is_uuid($contact_attachment_uuid)) {
@@ -44,7 +42,7 @@
$sql .= "where contact_attachment_uuid = :contact_attachment_uuid ";
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['contact_attachment_uuid'] = $contact_attachment_uuid;
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
$attachment = $database->select($sql, $parameters ?? null, 'row');
unset($sql, $parameters);
@@ -53,7 +51,7 @@
//determine mime type
$content_type = 'application/octet-stream'; //set default
$allowed_attachment_types = json_decode($_SESSION['contact']['allowed_attachment_types']['text'] ?? '', true);
$allowed_attachment_types = json_decode($_SESSION['contacts']['allowed_attachment_types']['text'] ?? '', true);
if (!empty($allowed_attachment_types)) {
if ($allowed_attachment_types[$attachment_type] != '') {
$content_type = $allowed_attachment_types[$attachment_type];
@@ -65,10 +63,6 @@
header("Content-type: ".$content_type."; charset=utf-8");
header("Content-Disposition: attachment; filename=\"".$attachment['attachment_filename']."\"");
header("Content-Length: ".strlen(base64_decode($attachment['attachment_content'])));
if (!empty($session_id)) {
header("Cache-Control: max-age=86400"); // 24h
header("Expires: ". gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); // 24h
}
echo base64_decode($attachment['attachment_content']);
break;
case 'display':
@@ -84,4 +78,4 @@
}
?>
?>
@@ -70,15 +70,15 @@
//get the attachment type
if (empty($attachment) || sizeof($attachment) == 0) {
$attachment_extension = strtolower(pathinfo($_POST['attachment_filename'], PATHINFO_EXTENSION));
$attachment_type = strtolower(pathinfo($_POST['attachment_filename'], PATHINFO_EXTENSION));
}
else {
$attachment_extension = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
$attachment_type = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
}
//unflag others as primary
$allowed_primary_attachment = false;
if ($attachment_primary && ($attachment_extension == 'jpg' || $attachment_extension == 'jpeg' || $attachment_extension == 'gif' || $attachment_extension == 'png')) {
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 ";
@@ -94,13 +94,19 @@
//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, ['png','jpg','jpeg','gif','bmp', 'webp'])) {
if (in_array($attachment_extension, $image_extensions)) {
//create the image object from the content string
$image = imagecreatefromstring($attachment_content);
@@ -108,27 +114,7 @@
ob_start();
//output the image without the EXIF data
switch ($attachment_extension) {
case 'png':
imagealphablending($image, FALSE);
imagesavealpha($image, TRUE);
imagepng($image);
break;
case 'jpg':
case 'jpeg':
imagejpeg($image);
break;
case 'gif':
imagesavealpha($image, TRUE);
imagegif($image);
break;
case 'bmp':
imagebmp($image);
break;
case 'webp':
imagewebp($image);
break;
}
imagepng($image);
//get the image from the buffer
$attachment_content = ob_get_contents();
@@ -227,11 +213,11 @@
echo " ".$text['label-attachment']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
$attachment_extension = strtolower(pathinfo($attachment_filename ?? '', PATHINFO_EXTENSION));
$attachment_type = strtolower(pathinfo($attachment_filename ?? '', PATHINFO_EXTENSION));
if ($action == 'update') {
echo "<input type='hidden' name='attachment_filename' value=\"".escape($attachment_filename)."\">\n";
if ($attachment_extension == 'jpg' || $attachment_extension == 'jpeg' || $attachment_extension == 'gif' || $attachment_extension == 'png') {
echo "<img src='data:image/".$attachment_extension.";base64,".$attachment_content."' style='border: none; width: auto; max-height: 400px;' oncontextmenu=\"window.open('contact_attachment.php?id=".$contact_attachment_uuid."&action=download'); return false;\">";
if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
echo "<img src='data:image/".$attachment_type.";base64,".$attachment_content."' style='border: none; width: auto; max-height: 400px;' oncontextmenu=\"window.open('contact_attachment.php?id=".$contact_attachment_uuid."&action=download'); return false;\">";
}
else {
echo "<a href='contact_attachment.php?id=".$contact_attachment_uuid."&action=download' style='font-size: 120%;'>".$attachment_filename."</a>";
@@ -245,7 +231,7 @@
echo "</td>\n";
echo "</tr>\n";
if ($action == 'update' && ($attachment_extension == 'jpg' || $attachment_extension == 'jpeg' || $attachment_extension == 'gif' || $attachment_extension == 'png')) {
if ($action == 'update' && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-attachment_filename']."\n";
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the contact attachment list
$sql = "select *, length(decode(attachment_content,'base64')) as attachment_size from v_contact_attachments ";
@@ -107,12 +107,8 @@
foreach ($contact_attachments as $row) {
$attachment_type = strtolower(pathinfo($row['attachment_filename'], PATHINFO_EXTENSION));
$attachment_type_label = $attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png' ? $text['label-image'] : $text['label-file'];
$list_row_url = '';
if (permission_exists('contact_attachment_edit')) {
$list_row_url = "contact_attachment_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_attachment_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_attachment_delete')) {
@@ -151,4 +147,3 @@
}
?>
@@ -55,7 +55,7 @@
echo "<style>\n";
echo " #contact_attachment_layer {\n";
echo " z-index: 999999;\n";
echo " position: fixed;\n";
echo " position: absolute;\n";
echo " left: 0px;\n";
echo " top: 0px;\n";
echo " right: 0px;\n";
@@ -61,7 +61,7 @@ if ($_SESSION['contact_auth']['source'] == 'google') {
if (isset($_REQUEST['signout'])) {
unset($_SESSION['contact_auth']['token']);
message::add($text['message-google_signed_out']);
header("Location: https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].PROJECT_PATH."/core/contacts/".$_SESSION['contact_auth']['referer']);
header("Location: https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].PROJECT_PATH."/app/contacts/".$_SESSION['contact_auth']['referer']);
exit;
}
@@ -117,4 +117,4 @@ else {
exit;
}
?>
?>
@@ -92,7 +92,7 @@
//$contact_users = $_POST["contact_users"];
//$contact_groups = $_POST["contact_groups"];
$contact_user_uuid = filter_var($_SESSION['contact']['permissions']['boolean'] ?? false, FILTER_VALIDATE_BOOLEAN) ? ($_POST["contact_user_uuid"] ?? $_SESSION["user_uuid"]) : ($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"];
@@ -367,33 +367,7 @@
if (!empty($contact_phones)) {
foreach ($contact_phones as $row) {
if (!empty($row['phone_number'])) {
//if speed dial number already exists, empty before save
if (!empty($row["phone_speed_dial"])) {
$phone_speed_dial_exists = false;
if (is_numeric($row["phone_speed_dial"])) {
$sql = "select count(contact_phone_uuid) ";
$sql .= "from v_contact_phones ";
$sql .= "where phone_speed_dial = :phone_speed_dial ";
$sql .= "and domain_uuid = :domain_uuid ";
if ($action == "update" && is_uuid($row["contact_phone_uuid"])) {
$sql .= "and contact_phone_uuid <> :contact_phone_uuid ";
$parameters['contact_phone_uuid'] = $row["contact_phone_uuid"];
}
$parameters['phone_speed_dial'] = $row["phone_speed_dial"];
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
if (!empty($database->execute($sql, $parameters, 'column'))) {
$phone_speed_dial_exists = true;
}
unset($sql, $parameters);
}
if (!is_numeric($row["phone_speed_dial"]) || $phone_speed_dial_exists) {
message::add($text['message-speed_dial_exists'],'negative');
unset($row["phone_speed_dial"]);
}
}
//add the speed dial
$array['contacts'][0]['contact_phones'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['contacts'][0]['contact_phones'][$y]['contact_uuid'] = $contact_uuid;
$array['contacts'][0]['contact_phones'][$y]['contact_phone_uuid'] = $row["contact_phone_uuid"];
@@ -522,17 +496,19 @@
$y = 0;
if (!empty($contact_attachments)) {
foreach ($contact_attachments as $row) {
$array['contacts'][0]['contact_attachments'][$y]['contact_attachment_uuid'] = $row["contact_attachment_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['domain_uuid'] = $row["domain_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['contact_uuid'] = $row["contact_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['attachment_primary'] = $row["attachment_primary"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_filename'] = $row["attachment_filename"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_content'] = $row["attachment_content"];
$array['contacts'][0]['contact_attachments'][$y]['attachment_description'] = $row["attachment_description"] ?? null;
//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_date'] = $row["attachment_uploaded_date"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_user_uuid'] = $row["attachment_uploaded_user_uuid"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_size'] = $row["attachment_size"];
$y++;
if (!empty($row['attachment_description'])) {
$array['contacts'][0]['contact_attachments'][$y]['contact_attachment_uuid'] = $row["contact_attachment_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['domain_uuid'] = $row["domain_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['contact_uuid'] = $row["contact_uuid"];
$array['contacts'][0]['contact_attachments'][$y]['attachment_primary'] = $row["attachment_primary"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_filename'] = $row["attachment_filename"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_content'] = $row["attachment_content"];
$array['contacts'][0]['contact_attachments'][$y]['attachment_description'] = $row["attachment_description"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_date'] = $row["attachment_uploaded_date"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_uploaded_user_uuid'] = $row["attachment_uploaded_user_uuid"];
//$array['contacts'][0]['contact_attachments'][$y]['attachment_size'] = $row["attachment_size"];
$y++;
}
}
}
@@ -989,10 +965,10 @@
}
};
if (search) {
xhttp.open("GET", "/core/contacts/contact_json.php?search="+search, true);
xhttp.open("GET", "/app/contacts/contact_json.php?search="+search, true);
}
else {
xhttp.open("GET", "/core/contacts/contact_json.php", true);
xhttp.open("GET", "/app/contacts/contact_json.php", true);
}
xhttp.send();
}
@@ -1037,7 +1013,7 @@
echo "<style>";
echo " #qr_code_container {";
echo " z-index: 999999; ";
echo " position: fixed; ";
echo " position: absolute; ";
echo " left: 0; ";
echo " top: 0; ";
echo " right: 0; ";
@@ -1047,24 +1023,18 @@
echo " }";
echo " #qr_code {";
echo " display: block; ";
echo " width: 100%; ";
echo " max-width: 650px; ";
echo " height: auto; ";
echo " width: 650px; ";
echo " height: 650px; ";
echo " -webkit-box-shadow: 0px 1px 20px #888; ";
echo " -moz-box-shadow: 0px 1px 20px #888; ";
echo " box-shadow: 0px 1px 20px #888;";
echo " }";
echo " #qr_code > img {";
echo " width: 100%; ";
echo " max-width: 650px; ";
echo " height: auto; ";
echo " }";
echo "</style>";
echo "<script src='".PROJECT_PATH."/resources/jquery/jquery-qrcode.min.js'></script>";
echo "<script language='JavaScript' type='text/javascript'>";
echo " $(document).ready(function() {";
echo " $('#qr_code').qrcode({ ";
echo " render: 'image', ";
echo " render: 'canvas', ";
echo " minVersion: 6, ";
echo " maxVersion: 40, ";
echo " ecLevel: 'H', ";
@@ -1082,23 +1052,6 @@
echo " });";
echo "</script>";
//styles and attachment viewing layer
if (permission_exists('contact_attachment_view') && !empty($contact_attachments) && is_array($contact_attachments)) {
echo "<style>\n";
echo " #contact_attachment_layer {\n";
echo " z-index: 999999;\n";
echo " position: fixed;\n";
echo " left: 0px;\n";
echo " top: 0px;\n";
echo " right: 0px;\n";
echo " bottom: 0px;\n";
echo " text-align: center;\n";
echo " vertical-align: middle;\n";
echo " }\n";
echo "</style>\n";
echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
}
//show the content
echo "<form name='frm' id='frm' method='post' action=''>\n";
echo "<input class='formfld' type='hidden' name='contact_uuid' value='".escape($contact_uuid)."'>\n";
@@ -1529,7 +1482,7 @@ echo " </div>\n";
echo " </div>\n";
unset($contact_note);
if (filter_var($_SESSION['contact']['permissions']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if ($_SESSION['contact']['permissions']['boolean'] == "true") {
if (permission_exists('contact_user_view') || permission_exists('contact_group_view')) {
echo " <div class='form_set card'>\n";
echo " <div class='heading'>\n";
@@ -1574,7 +1527,7 @@ if (filter_var($_SESSION['contact']['permissions']['boolean'] ?? false, FILTER_V
}
if (permission_exists('contact_user_add')) {
echo " <div class='vtable' style='border-bottom: none;'>\n";
echo " <select name='contact_user_uuid' class='formfld' style='width: 112px;'>\n";
echo " <select name='contact_user_uuid' class='formfld' style='width: auto;'>\n";
echo " <option value=''></option>\n";
foreach ($users as $field) {
if (!empty($contact_users_assigned) && in_array($field['user_uuid'], array_column($contact_users_assigned, 'user_uuid'))) { continue; } //skip users already assigned
@@ -1632,7 +1585,7 @@ if (filter_var($_SESSION['contact']['permissions']['boolean'] ?? false, FILTER_V
if (permission_exists('contact_group_add')) {
if (!empty($contact_groups_available)) {
echo " <div class='vtable' style='border-bottom: none;'>\n";
echo " <select name='contact_group_uuid' class='formfld' style='width: 112px;'>\n";
echo " <select name='contact_group_uuid' class='formfld' style='width: auto; margin-right: 3px;'>\n";
echo " <option value=''></option>\n";
foreach ($contact_groups_available as $field) {
if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; } //only show superadmin group to superadmins
@@ -1788,10 +1741,10 @@ if (permission_exists('contact_phone_view')) {
echo " <div class='label'>\n";
echo " ".$text['label-phone_type']."\n";
echo " </div>\n";
echo " <div class='field no-wrap' style='display: flex; flex-wrap: wrap; gap: 3px;'>\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_voice]' id='phone_type_voice' value='1' ".(($row['phone_type_voice']) ? "checked='checked'" : null)."> ".$text['label-voice']."</label>\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_fax]' id='phone_type_fax' value='1' ".(($row['phone_type_fax']) ? "checked='checked'" : null)."> ".$text['label-fax']."</label>\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_video]' id='phone_type_video' value='1' ".(($row['phone_type_video']) ? "checked='checked'" : null)."> ".$text['label-video']."</label>\n";
echo " <div class='field no-wrap'>\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_voice]' id='phone_type_voice' value='1' ".(($row['phone_type_voice']) ? "checked='checked'" : null)."> ".$text['label-voice']."</label>&nbsp;\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_fax]' id='phone_type_fax' value='1' ".(($row['phone_type_fax']) ? "checked='checked'" : null)."> ".$text['label-fax']."</label>&nbsp;\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_video]' id='phone_type_video' value='1' ".(($row['phone_type_video']) ? "checked='checked'" : null)."> ".$text['label-video']."</label>&nbsp;\n";
echo " <label style='padding-top: 2px; margin: 0;'><input type='checkbox' name='contact_phones[$x][phone_type_text]' id='phone_type_text' value='1' ".(($row['phone_type_text']) ? "checked='checked'" : null)."> ".$text['label-text']."</label>\n";
echo " <br />\n";
//echo $text['description-phone_type']."\n";
@@ -2348,7 +2301,7 @@ if (permission_exists('contact_relation_view')) {
$x = 0;
foreach($contact_relations as $row) {
//get contact details and contact_name
$sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname ";
$sql .= "from v_contacts ";
@@ -2592,6 +2545,21 @@ if (permission_exists('contact_attachment_view')) {
}
echo " </div>\n";
//styles and attachment layer
echo "<style>\n";
echo " #contact_attachment_layer {\n";
echo " z-index: 999999;\n";
echo " position: absolute;\n";
echo " left: 0px;\n";
echo " top: 0px;\n";
echo " right: 0px;\n";
echo " bottom: 0px;\n";
echo " text-align: center;\n";
echo " vertical-align: middle;\n";
echo " }\n";
echo "</style>\n";
echo "<div id='contact_attachment_layer' style='display: none;'></div>\n";
//script
echo "<script>\n";
echo " function display_attachment(id) {\n";
@@ -2609,7 +2577,7 @@ if (permission_exists('contact_attachment_view')) {
//if ($action == 'update') {
echo "<input type='hidden' name='attachment_filename' value=\"".escape($row['attachment_filename'])."\">\n";
if ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png') {
echo "<img src='data:image/".$attachment_type.";base64,".escape($row['attachment_content'])."' style='border: none; cursor: pointer; width: 100%; height: auto;' onclick=\"display_attachment('".escape($row['contact_attachment_uuid'])."');\">";
echo "<img src='data:image/".$attachment_type.";base64,".escape($row['attachment_content'])."' style='border: none; max-width: 220px; max-height: 220px;' oncontextmenu=\"window.open('contact_attachment.php?id=".escape($row['contact_attachment_uuid'])."&action=download'); return false;\">";
}
else {
echo "<a href='contact_attachment.php?id=".escape($row['contact_attachment_uuid'])."&action=download' style='font-size: 120%;'>".escape($row['attachment_filename'])."</a>";
@@ -2646,7 +2614,7 @@ if (permission_exists('contact_attachment_view')) {
echo " </select>\n";
echo " </div>\n";
echo " <div class='label'>\n";
echo " <div class='label required'>\n";
echo " ".$text['label-description']."\n";
echo " </div>\n";
echo " <div class='field no-wrap'>\n";
@@ -2719,9 +2687,8 @@ if (permission_exists('contact_note_view')) {
$x = 0;
foreach($contact_notes as $row) {
$contact_note = $row['contact_note'];
if (!empty($contact_note)) {
$contact_note = htmlspecialcars($contact_note, ENT_QUOTES, 'UTF-8');
}
$contact_note = escape($contact_note);
$contact_note = str_replace("\n","<br />",$contact_note);
if (permission_exists('contact_note_add')) {
$list_row_url = "contact_note_edit.php?contact_uuid=".escape($row['contact_uuid'])."&id=".escape($row['contact_note_uuid']);
}
@@ -239,7 +239,6 @@ if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
}
echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
@@ -312,7 +311,6 @@ if (!empty($_GET["contact_uuid"]) && is_uuid($_GET["contact_uuid"])) {
echo "</tr>\n";
echo "</table>";
echo "</div>\n";
echo "<br><br>";
echo "<input type='hidden' name='contact_uuid' value='".escape($contact_uuid ?? '')."'>\n";
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the contact list
$sql = "select * from v_contact_emails ";
@@ -71,7 +71,7 @@
echo "<th class='pct-15'>".$text['label-email_label']."</th>\n";
echo "<th>".$text['label-email_address']."</th>\n";
echo "<th class='hide-md-dn'>".$text['label-email_description']."</th>\n";
if (permission_exists('contact_email_edit') && $list_row_edit_button) {
if (permission_exists('contact_email_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -79,12 +79,8 @@
if (!empty($contact_emails)) {
$x = 0;
foreach ($contact_emails as $row) {
$list_row_url = '';
if (permission_exists('contact_email_edit')) {
$list_row_url = "contact_email_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_email_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_email_delete')) {
@@ -96,7 +92,7 @@
echo " <td>".escape($row['email_label'])." ".($row['email_primary'] ? "&nbsp;<i class='fas fa-star fa-xs' style='float: right; margin-top: 0.5em; margin-right: -0.5em;' title=\"".$text['label-primary']."\"></i>" : null)."</td>\n";
echo " <td class='no-link'><a href='mailto:".escape($row['email_address'])."'>".escape($row['email_address'])."</a>&nbsp;</td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['email_description'])."&nbsp;</td>\n";
if (permission_exists('contact_email_edit') && $list_row_edit_button) {
if (permission_exists('contact_email_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -114,4 +110,3 @@
}
?>
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the extension list
$sql = "select e.extension_uuid, e.extension, e.enabled, e.description ";
@@ -69,7 +69,7 @@
echo "<th>".$text['label-extension']."</th>\n";
echo "<th class='center'>".$text['label-enabled']."</th>\n";
echo "<th class='hide-md-dn'>".$text['label-description']."</th>\n";
if (permission_exists('extension_edit') && $list_row_edit_button) {
if (permission_exists('extension_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -77,12 +77,8 @@
if (!empty($contact_extensions)) {
$x = 0;
foreach ($contact_extensions as $row) {
$list_row_url = '';
if (permission_exists('extension_edit')) {
$list_row_url = PROJECT_PATH.'/app/extensions/extension_edit.php?id='.urlencode($row['extension_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."' ".($row['url_primary'] ? "style='font-weight: bold;'" : null).">\n";
echo " <td>";
@@ -95,7 +91,7 @@
echo " </td>\n";
echo " <td class='center'>".$text['label-'.escape($row['enabled'])]."&nbsp;</td>\n";
echo " <td class='description overflow hide-md-dn'>".$row['description']."&nbsp;</td>\n";
if (permission_exists('extension_edit') && $list_row_edit_button) {
if (permission_exists('extension_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -113,4 +109,3 @@
}
?>
@@ -92,7 +92,7 @@
//get the schema
$x = 0;
include "core/contacts/app_config.php";
include "app/contacts/app_config.php";
$i = 0;
foreach ($apps[0]['db'] as $table) {
//get the table name and parent name
@@ -149,7 +149,8 @@
}
//create token
$token = $token->create($_SERVER['PHP_SELF']);
$object = new token;
$token = $object->create($_SERVER['PHP_SELF']);
//include header
$document['title'] = $text['title-contacts_import'];
@@ -82,12 +82,8 @@
$contact_note = $row['contact_note'];
$contact_note = escape($contact_note);
$contact_note = str_replace("\n","<br />",$contact_note);
$list_row_url = '';
if (permission_exists('contact_note_add')) {
$list_row_url = "contact_note_edit.php?contact_uuid=".escape($row['contact_uuid'])."&id=".escape($row['contact_note_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_note_delete')) {
@@ -116,4 +112,3 @@
}
?>
@@ -155,32 +155,6 @@
unset($sql, $parameters);
}
//if speed dial number already exists, empty before save
if (!empty($phone_speed_dial)) {
$phone_speed_dial_exists = false;
if (is_numeric($phone_speed_dial)) {
$sql = "select count(contact_phone_uuid) ";
$sql .= "from v_contact_phones ";
$sql .= "where phone_speed_dial = :phone_speed_dial ";
$sql .= "and domain_uuid = :domain_uuid ";
if ($action == "update" && is_uuid($contact_phone_uuid)) {
$sql .= "and contact_phone_uuid <> :contact_phone_uuid ";
$parameters['contact_phone_uuid'] = $contact_phone_uuid;
}
$parameters['phone_speed_dial'] = $phone_speed_dial;
$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
if (!empty($database->execute($sql, $parameters, 'column'))) {
$phone_speed_dial_exists = true;
}
unset($sql, $parameters);
}
if (!is_numeric($phone_speed_dial) || $phone_speed_dial_exists) {
message::add($text['message-speed_dial_exists'],'negative');
unset($phone_speed_dial);
}
}
//add the phone
if ($action == "add" && permission_exists('contact_phone_add')) {
$contact_phone_uuid = uuid();
@@ -85,7 +85,7 @@
echo "<th>".$text['label-phone_type']."</th>\n";
echo "<th>".$text['label-phone_tools']."</th>\n";
echo "<th class='hide-md-dn'>".$text['label-phone_description']."</th>\n";
if (permission_exists('contact_phone_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (permission_exists('contact_phone_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -93,12 +93,8 @@
if (!empty($contact_phones)) {
$x = 0;
foreach ($contact_phones as $row) {
$list_row_url = '';
if (permission_exists('contact_phone_edit')) {
$list_row_url = "contact_phone_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_phone_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_phone_delete')) {
@@ -130,7 +126,7 @@
}
echo " </td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['phone_description'])."&nbsp;</td>\n";
if (permission_exists('contact_phone_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
if (permission_exists('contact_phone_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -148,4 +144,3 @@
}
?>
@@ -51,29 +51,6 @@
//show if exists
if (!empty($contact_phones)) {
//detect speed dial prefix from dialplan
$sql = "select dialplan_detail_data from v_dialplan_details ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and dialplan_uuid = ( ";
$sql .= " select dialplan_uuid from v_dialplan_details ";
$sql .= " where domain_uuid = :domain_uuid ";
$sql .= " and dialplan_detail_data like 'app.lua speed_dial%' ";
$sql .= " and (dialplan_detail_enabled = true or dialplan_detail_enabled is null) ";
$sql .= " limit 1 ";
$sql .= ") ";
$sql .= "and dialplan_detail_tag = 'condition' ";
$sql .= "and dialplan_detail_type = 'destination_number' ";
$sql .= "and dialplan_detail_data like '^\\\\%' ";
$sql .= "and (dialplan_detail_enabled = true or dialplan_detail_enabled is null) ";
$sql .= "limit 1";
$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
$speed_dial_condition = $database->select($sql, $parameters, 'column');
if (!empty($speed_dial_condition)) {
$speed_dial_prefix = str_replace('(.*)', '', trim($speed_dial_condition,'^\$')); // default: ^\*0(.*)$
}
unset($sql, $speed_dial_condition);
//javascript function: send_cmd
echo "<script type='text/javascript'>\n";
echo "function send_cmd(url) {\n";
@@ -104,12 +81,9 @@
if ($row['phone_type_video']) { $phone_types[] = "<i class='fas fa-video fa-fw' style='margin-right: 3px;' title=\"".$text['label-video']."\"></i>"; }
if ($row['phone_type_text']) { $phone_types[] = "<i class='fas fa-sms fa-fw' style='margin-right: 3px;' title=\"".$text['label-text']."\"></i>"; }
if (!empty($phone_types)) {
echo " ".implode(" ", $phone_types);
echo " ".implode(" ", $phone_types)."\n";
}
unset($phone_types);
if (!empty($row['phone_speed_dial'])) {
echo "<nobr><i class='fas fa-bolt fa-fw' title=\"".$text['label-phone_speed_dial']."\"></i>".$speed_dial_prefix."<strong>".$row['phone_speed_dial']."</strong></nobr>";
}
echo "</div>\n";
$x++;
}
@@ -241,10 +241,10 @@
}
};
if (search) {
xhttp.open("GET", "/core/contacts/contact_json.php?search="+search, true);
xhttp.open("GET", "/app/contacts/contact_json.php?search="+search, true);
}
else {
xhttp.open("GET", "/core/contacts/contact_json.php", true);
xhttp.open("GET", "/app/contacts/contact_json.php", true);
}
xhttp.send();
}
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the related contacts
$sql = "select ";
@@ -85,7 +85,7 @@
echo "<th>".$text['label-contact_relation_label']."</th>\n";
echo "<th>".$text['label-contact_relation_organization']."</th>\n";
echo "<th>".$text['label-contact_relation_name']."</th>\n";
if (permission_exists('contact_relation_edit') && $list_row_edit_button) {
if (permission_exists('contact_relation_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -93,12 +93,8 @@
if (!empty($contact_relations)) {
$x = 0;
foreach ($contact_relations as $row) {
$list_row_url = '';
if (permission_exists('contact_relation_edit')) {
$list_row_url = "contact_relation_edit.php?contact_uuid=".urlencode($contact_uuid)."&id=".urlencode($row['contact_relation_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_relation_delete')) {
@@ -110,7 +106,7 @@
echo " <td>".escape($row['relation_label'])."&nbsp;</td>\n";
echo " <td class='no-link'><a href='contact_edit.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_organization'])."</a>&nbsp;</td>\n";
echo " <td class='no-link'><a href='contact_edit.php?id=".urlencode($row['contact_uuid'])."'>".escape($row['contact_name_given']).((!empty($row['contact_name_given']) && !empty($row['contact_name_family'])) ? ' ' : null).escape($row['contact_name_family'])."</a>&nbsp;</td>\n";
if (permission_exists('contact_relation_edit') && $list_row_edit_button) {
if (permission_exists('contact_relation_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -128,4 +124,3 @@
}
?>
@@ -39,7 +39,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//get the list
$sql = "select * from v_contact_settings ";
@@ -78,7 +78,7 @@
echo "<th>".$text['label-contact_setting_value']."</th>";
echo "<th class='center'>".$text['label-enabled']."</th>";
echo "<th class='hide-md-dn'>".$text['label-description']."</th>";
if (permission_exists('contact_setting_edit') && $list_row_edit_button) {
if (permission_exists('contact_setting_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -86,12 +86,8 @@
if (!empty($contact_settings)) {
$x = 0;
foreach ($contact_settings as $row) {
$list_row_url = '';
if (permission_exists('contact_setting_edit')) {
$list_row_url = "contact_setting_edit.php?contact_uuid=".urlencode($contact_uuid)."&id=".urlencode($row['contact_setting_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_setting_delete')) {
@@ -119,7 +115,7 @@
echo " </td>\n";
echo " <td class='center'>".$text['label-'.escape($row['contact_setting_enabled'])]."&nbsp;</td>\n";
echo " <td class='description overflow hide-md-dn'>".$row['contact_setting_description']."&nbsp;</td>\n";
if (permission_exists('contact_setting_edit') && $list_row_edit_button) {
if (permission_exists('contact_setting_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -137,4 +133,3 @@
}
?>
@@ -38,7 +38,7 @@
}
//set from session variables
$list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL);
$list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false';
//set the uuid
if (!empty($_GET['id']) && is_uuid($_GET['id'])) {
@@ -79,7 +79,7 @@
echo "<th class='pct-20'>".$text['label-time_start']."</th>\n";
echo "<th class='pct-20'>".$text['label-time_duration']."</th>\n";
echo "<th class='pct-40 hide-md-dn'>".$text['label-time_description']."</th>\n";
if (permission_exists('contact_time_edit') && $list_row_edit_button) {
if (permission_exists('contact_time_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>&nbsp;</td>\n";
}
echo "</tr>\n";
@@ -97,12 +97,8 @@
}
$tmp = explode(' ', $row['time_start']);
$time_start = $tmp[0];
$list_row_url = '';
if (permission_exists('contact_time_edit')) {
$list_row_url = "contact_time_edit.php?contact_uuid=".urlencode($row['contact_uuid'])."&id=".urlencode($row['contact_time_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('contact_time_delete')) {
@@ -115,7 +111,7 @@
echo " <td>".$time_start."&nbsp;</td>\n";
echo " <td>".$time."&nbsp;</td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['time_description'])."&nbsp;</td>\n";
if (permission_exists('contact_time_edit') && $list_row_edit_button) {
if (permission_exists('contact_time_edit') && $list_row_edit_button == 'true') {
echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n";
@@ -133,4 +129,3 @@
}
?>

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