Commit Graph

245 Commits

Author SHA1 Message Date
frytimo
08001488f4 Allow namespace in auto loader (#7307)
* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove class_exists wrapper for class definitions

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove include statement of class file

* remove closing tag

* remove invalid method params

* remove closing tag

* remove closing tag

* Update auto_loader to load each class file in the project
Update the auto_loader class to use an include statement on each file in the project to load the class within the file. This will allow mismatched names within the file to be loaded and mapped according to the declaration instead of the filename. The class is then checked against the parsed classes from the PHP engine so that namespaces are available and mapped to the file they were declared in. An update was also made to the search algorithm used to find a file that was not already loaded by collapsing the array to have only valid matches to increase performance on a cache miss. Logging within the auto_loader has been moved to a function.
Multiple files were modified to allow the include statement. When the class has the `if(class_exists())` statement, the auto_loader is called to check for the class. This caused an infinite loop scenario so all wrappers have been removed. The auto_loader will now break the loop by directly modifying the internal classes array instead of trying to restart with the 'reload_classes' method.

- APCu is used to cache classes so any loading of the classes is done only once. To clear the APCu cache, restart php-fpm or call the auto_loader::clear_cache() function.
- Cache file is used when APCu is not available. To clear the cache remove it from the tmp folder or call the auto_loader::clear_cache() function.
- All classes must no longer have a class_exists wrapper to benefit from the performance boost.
- Classes should not be directly included when the auto_loader is used.

* remove include statement of class file

* Update destinations.php
2025-03-12 13:55:47 -06:00
FusionPBX
8ef90b9dcc Update xml_cdr.php 2025-03-08 14:42:35 -07:00
frytimo
d529021b3f Use boolean setting as true boolean (#7284)
* use boolean setting as true boolean

* Update settings class to use the php filter_var function for boolean
Using the built-in filter type for boolean seems like a better option as they are faster, already hardened, and more widely tested.
I found this better method used originally by Mark J. Crane in 2022 in the content.php page so I included it here.

* Update settings class to use the php filter_var function for boolean
Using the built-in filter type for boolean seems like a better option as they are faster, already hardened, and more widely tested.
I found this better method used originally by Mark J. Crane in 2022 in the content.php page so I included it here.
2025-03-04 11:25:47 -07:00
FusionPBX
b4de6f5e4b Use 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.
2025-02-28 17:09:35 -07:00
FusionPBX
37840abb98 Fix the cdr http_enabled boolean condition 2025-02-20 09:51:08 -07:00
FusionPBX
2661ad7bf0 Allow the @ in the Caller ID name 2025-02-17 11:56:01 -07:00
FusionPBX
8b54dd8b61 Fix invalid XML CDR 2025-02-15 18:56:12 -07:00
FusionPBX
abd2077ede Send CDR with invalid xml to failed/invalid_xml 2025-02-15 18:21:14 -07:00
FusionPBX
cd5ed73602 Allow # and * in the sanitized caller ID 2025-02-11 13:26:32 -07:00
frytimo
1c29addf08 fix spelling mistake in xml_cdr function name (#7240) 2025-02-03 13:21:47 -07:00
FusionPBX
355c0e692c Update call details
- Add pass objects into the constructor
- details show local source and destination extensions
2025-01-28 21:57:41 -07:00
frytimo
79b0767343 fix xml_cdr import failing to move a zero byte record to failed folder (#7210)
When an XML CDR record is zero bytes that is recorded in the /var/log/freeswitch/xml_cdr directory, the xml_cdr class would fail to move the file. This causes the record files to eventually build up to where the files can exceed the import limit. This adjustment moves the sanity checking for `filesize` to before the import attempt and checks for over limit and zero bytes. If those conditions match the file is moved to the "failed" folder.
2025-01-09 11:47:28 -07:00
frytimo
76af096f52 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-01 10:32:12 -07:00
FusionPBX
afaf31c3a2 Sanitize the caller ID name and number 2024-12-20 11:07:05 -07:00
FusionPBX
cd8d5302ac Fix temporary permissions 2024-11-29 13:57:01 -07:00
FusionPBX
8655c792a3 Fix ring group missed call to show in CDR 2024-11-19 13:42:25 -07:00
FusionPBX
caba7800d1 Updated Call Flow Summary for outbound calls 2024-11-14 17:06:41 -07:00
FusionPBX
fca029b7df 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 18:09:32 -07:00
FusionPBX
139867815f 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:21:18 -07:00
Antonio Fernandez
fab9a6bbc9 Ring Group search in CDR (#7177)
* Adding Ring Group dropdown in cdr search

* 2nd commit

* remove unused permission
2024-11-01 10:06:23 -06:00
frytimo
557de4b744 Update settings using real boolean (#7165)
* update settings using real boolean
2024-10-22 18:55:19 -06:00
fusionate
e0fe291da0 CDR - Recording Playback: Fix seeking for chromium based browsers. 2024-10-18 18:58:44 -06:00
fusionate
5459bca44b CDR - Recording Playback: Fix progress indicator in chromium based browsers. 2024-10-16 17:29:10 -06:00
FusionPBX
9c68c183f2 Fix play recording in CDR 2024-10-16 16:18:13 -06:00
anthony-ricci
6b49a92f76 Update xml_cdr.php (#7156)
Fixed CDR recording playback - casting an empty string to an int breaks the if statement.
2024-10-08 17:27:54 -06:00
FusionPBX
1134341635 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:28:41 -06:00
FusionPBX
0c9329b119 Restore previous caller ID behavior
If the caller ID was updated then update the caller ID
2024-09-23 13:00:46 -06:00
markjcrane
5cbc53c7d9 Fix end of file line only use one line feed at the end of the file 2024-09-19 16:33:17 -06:00
FusionPBX
88bfb18e5a Add hold_accum_seconds to the xml_cdr table 2024-08-28 10:05:48 -06:00
FusionPBX
64b565d974 This line overwrites the $uuid
We only want to get the uuid one time. This resolves that issue.
2024-08-09 10:52:21 -06:00
FusionPBX
78d24e16dd If the uuid variable is empty try call_uuid
Found a case where the variables -> uuid doesn't exist found call_uuid as an alternative.
2024-08-09 10:06:17 -06:00
frytimo
46abe4897c use loose comparison instead of strict comparison (#7064)
Update comparison checks when testing the database status and
add a unified log message with a more detailed message from the
database when there is a failure

Authored-by: Tim Fry <tim@fusionpbx.com>
2024-07-23 19:58:13 -06:00
frytimo
0ea012c494 Update database_maintenance (#7037) 2024-07-05 17:37:50 -06:00
FusionPBX
c0e1b1a6b5 Changed the order of missed_call conditions
Move billsec condition near the end but before voicemail.

If a call center call was missed but answered by an extension with the exit action then the call wasn't technically missed.
2024-07-03 14:35:13 -06:00
frytimo
5ea753295d add maintenance function to the xml_cdr (#7025)
Co-authored-by: Tim Fry <tim@fusionpbx.com>
2024-06-27 11:27:09 -06:00
fusionate
003b6d7aa8 CDR [Class]: Mitigate PHP 8.x warnings. 2024-05-21 15:33:15 -06:00
FusionPBX
5286dbbb1b Add isset with variable last_app 2024-05-15 14:47:07 -06:00
FusionPBX
a16ec80ce4 Update the caller ID when using intercept
When intercept is used then use the last_sent_callee_id_name and last_sent_callee_id_number for the caller ID information.
2024-05-15 14:24:52 -06:00
fusionate
7556956763 CDR - Details: Mitigate PHP 8.x warnings. 2024-05-13 10:27:34 -06:00
fusionate
58d2a9d754 CDR - Details: Mitigate PHP 8.x errors. 2024-05-02 15:42:47 -06:00
FusionPBX
d11308b844 New setting save_call_detail_record
If blocked by call block option to save the call detail record true or false.
2024-04-30 18:21:42 -06:00
FusionPBX
e81d711a92 Update xml_cdr.php
- Initialize the database class in the constructor
- Improve efficiency by removing extra database instances
- Bug fix. If cc_queue has been provided and call_center_queue_uuid is empty. Then use it to get the call_center_queue_uuid
2024-04-16 09:54:27 -06:00
FusionPBX
179745f871 Make Call Center variables more robust 2024-04-09 17:20:38 -06:00
Andy-Seattle
bbabb4f861 Handle ERR no such channel during call intercepts (#6943)
When call center is not enabled, during a standard call intercept sometimes we are seeing an error as follows:
call_center_queue_uuid=-ERR%20No%20such%20channel!%0A
cc_queue_joined_epoch=-ERR%20No%20such%20channel!%0A
Normally it returns call_center_queue_uuid=_undef_ but occasionally shows the ERR message.
When the epoch variable is set to this it causes the XML CDR service to continually stop and start at the same CDR which raises the CPU load on the server significantly until the CDR is deleted.
This code fix will handle the ERR message in the same way as _undef_.
2024-04-05 17:36:25 -06:00
FusionPBX
e0f4309076 New setting call_log_enabled default false 2024-03-12 17:44:46 -06:00
FusionPBX
e6ca01a7af Add Call Logs and CDR JSON, and Call Flows.
Move the CDR JSON and and Call Flows data to their own tables and add a new table for the Call Log.
2024-03-11 18:51:36 -06:00
FusionPBX
bb8c4c0e66 Include ORIGINATOR_CANCEL for missed calls 2024-03-01 14:08:47 -07:00
FusionPBX
4d9160b1cd Extension summary add voicemail column and use the CDR status 2024-02-22 21:04:14 -07:00
FusionPBX
dbc88b847a Replace voicemail_answer_stamp with voicemail_message_seconds
The voicemail_answer_stamp value exists if the call reaches voicemail. The voicemail_message_seconds is set if the caller leaves a voicemail message.
2024-02-20 12:47:10 -07:00
FusionPBX
359a323c1f Don't use voicemail_id to determine call status
This is an unreliable way to detect if the call when to voicemail.
2024-02-20 12:28:59 -07:00