Commit Graph

304 Commits

Author SHA1 Message Date
FusionPBX
448fe1af55 Fix to add domain_uuid, domain_name to the bridge 2026-03-12 18:55:15 +00:00
FusionPBX
df54d9eed6 Remove the hostname prefix from the directory cache key 2026-03-04 11:55:42 -07:00
FusionPBX
9f56ac9e30 If not set then set the record_ext to wav 2026-03-03 09:15:53 -07:00
FusionPBX
21246b3bc3 Fix voicemail remote_access 2026-02-16 12:37:51 -07:00
FusionPBX
8284201e7b Fix intermittent call recording by removing api_on_answer 2026-02-12 12:27:36 -07:00
FusionPBX
921581ec23 Change Fanvil event header for check_sync command #7740 2026-02-09 13:21:00 -07:00
FusionPBX
10d39c2100 Add record_stereo=true to the ring group lua script 2026-02-04 12:29:04 -07:00
markjcrane
f294d7c836 Remove the widget background and detail color default value 2026-01-27 18:55:03 -07:00
FusionPBX
6c2c215cf8 Add instant_ringback to the bridge statement 2026-01-15 18:29:18 -07:00
FusionPBX
6d8618cb2f Add sip_h_caller_destination to the dial_string if it has a value 2025-12-15 12:17:43 -07:00
FusionPBX
46bc156dc4 Predefine the subject and body variables 2025-12-15 10:45:28 -07:00
john doe
b2fc02f4a8 Replace CONCAT with indexable expressions and refactor using CTE (#7647)
Replaced unindexable CONCAT() with COALESCE(col, '') || ... and refactored dialplan lookup into a CTE with UNION to split destination-based and public-context paths.

CONCAT() is marked as STABLE in PostgreSQL and cannot be used in functional indexes, which forced sequential scans during dialplan lookups. To enable future indexing and improve query optimizability, we replace all CONCAT(a, b, c) calls with (COALESCE(a, '') || COALESCE(b, '') || COALESCE(c, '')), which is functionally equivalent for text columns (treating NULLs as empty) and composed only of IMMUTABLE operations.

Additionally, the query was refactored using a CTE with UNION to decompose a complex top-level OR condition into two independent branches:
1. Dialplans linked to matching destinations.
2. Public dialplans with domain_uuid IS NULL.

This structure allows the planner to optimize each path separately, avoid full-table scans, and leverage primary key lookups efficiently - even without additional indexes.

On a production dataset with 3kk records in v_dialplans, this change reduced dialplans query latency from ~1.5s to ~37ms (40.5x faster), with further gains possible via expression indexes.
2025-12-09 09:02:26 -07:00
FusionPBX
6b063f2c28 Replace the DOCUMENT_ROOT and PROJECT_ROOT variables
Use the __DIR__ constant and dirname as needed
2025-12-08 14:12:19 -07:00
FusionPBX
9a1e624af0 Fix condition for voicemail_transcription_enabled 2025-12-05 15:00:45 -07:00
FusionPBX
5996544050 Fix the call center dsn variable: dsn_callcenter 2025-12-02 11:09:18 -07:00
Ahron Greenberg (agree)
46f1ba9b2c Remove wrong 'Feature-Event' headers from event (#7635)
On multipart feature events, the feature-event header needs to be `init` only.
2025-11-24 05:11:53 -07:00
frytimo
adfc4cc469 Create more documentation (#7627)
* Documentation, format class, no modification.
2025-11-18 18:33:07 -07:00
Alex
4c45329df0 Update links to use new active calls (#7611)
* Update links to use new active calls

* Update call_broadcast_send.php

* Update system_status.php
2025-11-13 09:52:13 -07:00
FusionPBX
bcc7bf9dc2 Add bind_digit_action for follow me 2025-11-07 21:06:53 -07:00
markjcrane
7286d4b58d Update permission_exists for multiple permissions 2025-11-06 08:20:46 -07:00
markjcrane
de74db14ee Add support for Poly check-sync 2025-11-05 17:24:19 -07:00
markjcrane
b0eabca1f6 Update check permisisons 2025-11-02 00:22:57 -06:00
markjcrane
2ba40da0d4 Update the emergency_calls SQL Query 2025-10-31 21:40:02 -06:00
markjcrane
1d7ec1b020 Add dialplan emergency_calls
Adds a feature dial *911 to check recent emergency calls
2025-10-31 21:08:37 -06:00
FusionPBX
cf81cca8d1 Update boolean handling 2025-10-30 20:09:49 -06:00
FusionPBX
11eb62a50d Add missing call_center_agent_uuid required field 2025-10-30 14:56:44 -06:00
FusionPBX
39502959b2 Fix the call center agent_record boolean
Cast the agent_record in Lua. To a string then used agent_record == 'true'
2025-10-30 14:33:47 -06:00
FusionPBX
da2264aca0 Fix voicemail using tonumber on message_silence_seconds 2025-10-28 11:11:29 -06:00
Harry Foster
6530340765 Update the message length checker to match the silence seconds, otherwise silent voicemails are emailed or put into the voicemail box and cannot be played properly 2025-10-21 17:29:13 +01:00
FusionPBX
68d7f536d9 Update index.lua 2025-10-20 14:32:04 -06:00
FusionPBX
c4e38a3b93 Update call_forward.lua 2025-10-20 14:31:14 -06:00
Mark J Crane
090d4580d6 Add the hostname cache prefix 2025-10-20 14:29:28 -06:00
Alex
729b3bf314 Fix widget name setting not being used on some widget labels (#7582)
* Fix widget name setting not being used on some widget labels

* Update app_languages.php

* Add translations for active calls labels and titles

* Update active_calls.php

* Update call_forward.php

* Update device_keys.php

* Add multi-lingual support for widget labels

Updated widget label to support multi-lingual text.

* Update caller_id.php

* Add multilingual support and update widget label

* Update switch_status.php

* Update system_counts.php

* Replace static title with localized widget label

Updated widget title to use localized label.

* Add multilingual support for disk usage widget

* Add translations for system disk usage labels

* Update system_status.php

* Update system_network_status.php

* Add multi-lingual support for CPU status widget

* Update app_languages.php

* Update app_languages.php

* Update voicemails.php

* Add multi-lingual support for missed calls widget

* Update recent_calls.php

* Simplify widget label assignment using null coalescing

* Update call_center_agents.php

* Update app_languages.php
2025-10-17 17:01:39 -06:00
FusionPBX
dda18481ec Refactor PHP code (#7574)
* Use settings-get method
- get default, domain and user settings
- Replace _SESSION

* Simplify get domain paging

* Change isset using empty

* Fix token name and hash

* Add new default settings category: contact, name: default_sort_column, and default_sort_order

* Update app_config.php

* Update footer.php

* Fix require.php and core/dashboard/index.php (#7563)

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Fix require.php and core/dashboard/index.php

* Update destinations.php

* Update permission.php

* Update require.php

---------

Co-authored-by: FusionPBX <markjcrane@gmail.com>
Co-authored-by: FusionPBX <mark@fusionpbx.com>

* Update header.php

* Use settings get classes (#7567)

* access_control

* azure

* azure

* basic_operator_panel

* bridges

* call_block

* call_broadcast

* call_center

* call_flows

* call_forward

* call_recordings

* do_not_disturb

* feature_event_notify

* follow_me

* remove unused object properties

* fix esl command

* fix esl command

* conference_centers

* conference_centers - remove whitespace

* conference_controls

* conference_profiles

* conference_profiles

* Delete core/websockets/resources/classes/socket_exception.php.original~

* Delete core/websockets/resources/classes/websocket_server.php.original~

* conferences

* destinations

* device

* dialplan

* email_queue

* event_guard

* extension_settings

* extension

* fax

* fax_queue

* fifo

* gateways

* ivr_menu

* modules

* switch_music_on_hold

* number_translations

* phrases

* pin_numbers

* provision

* switch_recordings

* registrations

* ring_groups

* sip_profiles

* sofia_global_settings

* streams

* presence

* switch_files

* time_conditions

* vars

* voicemail_greetings

* voicemail

* ringbacks

* contacts

* xml_cdr

* authentication

* dashboard

* default_settings

* domain_settings

* email_templates

* permission

* user_logs

* user_settings

* users

* button

* cache

* captcha

* remove cli_option

* remove directory.php for switch_directory class

* email

* file

* groups

* event_socket use config object

* Use intval to give an integer port

* switch_settings

* tones

* fix object used before initialization

* menu

* fix copy paste error for switch_files.php

* always include require.php for framework files

* Fix missing properties

* set the action

* Use the $database object

* Add missing class properties

* Fix the domain_name

* Use public scope for domain_uuid and domain_name

* Add missing parameters

* Correct the user_uuid parameter

* Add json_validate and use it in the dashboard
update indentation on functions.php

* Intialize the active_registrations variable

* Define the $parameters

* Set a default value for user_setting_enabled

* Add condition domain_uuid not empty

* Add not empty condition for domain_uuid

* Declare the global variables

* Update how the defaults are set use ??

* Use ?? to set the default values

* Update call_center_queue_edit.php

* Prevent an error

* Add domain_name property

* Fix the null coalescing operator

* Removed domain_uuid from the URL

* Change condition to check sip_profile_domain_name

* Refactor domain_uuid declaration and comments

Removed redundant domain_uuid declaration and updated comments.

* Account for an empty value

* Refactor constructor to use settings array

Updated constructor to accept settings array for domain UUID and database initialization.

* Refactor xml_cdr.php to improve variable organization

Removed duplicate domain_uuid declaration and reorganized private variables for better structure.

* Enhance transcription button logic and icon display

Updated transcription button visibility conditions and improved application icon handling in the call flow summary.

* Refactor settings initialization in domains.php

Updated settings initialization to include domain_uuid and user_uuid.

* Modify domain change condition in require.php

Updated condition to check if 'domain_change' is not empty before proceeding.

* Set default_setting_enabled to true by default

* Enhance domain UUID check in access controls

* Enhance domain UUID check in settings list

* Refactor category display logic in vars.php

* Simplify list row URL generation

Removed domain UUID check from list row URL construction.

* Refactor module category display logic

* Fix SQL query by removing parameters variable

* Initialize result_count variable for call recordings

* Refactor leg variable usage in xml_cdr_details.php

* Update conference_room_edit.php

* Change GET to REQUEST for order and search variables

* Set timezone and SQL time format in recordings.php

Added timezone and SQL time format settings.

* Set default for ring group greeting

* Improve domain UUID check in stream listing

* Handle null voicemail_option_param safely

* Add file existence check for greeting files

Check if greeting file exists before getting size and date.

* Improve domain UUID check in email templates

* Update FIFO strategy dropdown and description text

* Add multilingual agent descriptions

Added multilingual descriptions for agents in the app_languages.php file.

* Add music on hold descriptions

* Add the chime list description

Updated copyright year from 2024 to 2025.

* Fix domain UUID check and handle email subject decoding

* Add null coalescing for $value in email_test.php

Ensure $value is not null by providing a default empty string.

* Handle undefined dialplan_uuid in input field

* Add translations for 'Status' label in multiple languages

* Fix typo in config instance check

---------

Co-authored-by: frytimo <tim@fusionpbx.com>
2025-10-15 21:24:59 -06:00
FusionPBX
e4ca0bf47d Add hostname cache key as a prefix 2025-10-15 20:33:46 -06:00
FusionPBX
4777d8b928 When hostname is used in the cache key use it as a prefix 2025-10-15 20:02:46 -06:00
FusionPBX
55a9e58dcf Fix follow me
Cast to a string and evaluating conditions as 'true' or 'false' is the most effective approach for Lua.
2025-10-06 16:21:58 -06:00
FusionPBX
2fe8b65988 Define app_name and app_uuid as constants (#7534)
* Set a constant on each class for app_name and app_uuid
* Update the database class to use the app_uuid and app_name
* Update the classes to use the database::new()
* Remove the instances of 'new database'
2025-09-30 21:37:09 -06:00
FusionPBX
7bcbba3bc1 Fix the sql for feature event notify lua 2025-09-29 10:26:43 -06:00
FusionPBX
4ef34b8790 Fix the do not disturb feature code 2025-09-24 17:57:13 -06:00
FusionPBX
a75513dba9 Fix ring group destination call forward and follow me 2025-09-24 16:56:01 -06:00
FusionPBX
c74cebf363 Fix ring group forward 2025-09-24 14:15:19 -06:00
FusionPBX
dd5eee0289 update record_message.lua 2025-09-24 14:04:21 -06:00
FusionPBX
341b6f3137 Voicemail recording insturctions and options cast boolean to text 2025-09-24 13:56:55 -06:00
FusionPBX
daa88119e2 Update follow_me.lua 2025-09-24 09:57:29 -06:00
FusionPBX
1191dd7cc1 Update callcenter lua to handle boolean 2025-09-24 08:46:42 -06:00
FusionPBX
69c9c7c03a Add the fields to the SQL query and cast direct dial to text 2025-09-23 14:24:29 -06:00
FusionPBX
9da40c38be Fix a syntax error 2025-09-22 11:17:54 -06:00
FusionPBX
b5037da3b8 Fix a syntax issue 2025-09-22 10:53:27 -06:00
FusionPBX
573903147a Use SQL to cast to boolean 2025-09-21 14:43:17 -06:00