Commit Graph

228 Commits

Author SHA1 Message Date
frytimo
75b5f00812 Fix network widget speed calculation (#7679)
- Fix the speed to calculate on bits instead of bytes so the speed transfer rates are more accurate
- Add PHPDoc blocks to the dashboard class (No code changes)
2025-12-24 09:48:15 -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
markjcrane
df90513f86 Add table_exists condition to prevent an error on new installs 2025-12-08 12:34:15 -07:00
frytimo
4c2e84f1bc Fix active calls dashboard widget hover (#7652)
* Fix active calls dashboard widget hover

* Fix PHP warning for widget background color
2025-12-06 08:14:22 -07:00
Alex
ccd19e7d65 Set default widget boolean values (#7646) 2025-11-25 17:31:09 -07:00
markjcrane
323d318141 Update boolean toggle
- When 2 equals it evaluates null as false and then false is selected.
2025-11-19 15:26:40 -07:00
markjcrane
acbddb2a4d Update dashboard app defaults
- Remove old dashboard data
- Add more comments
2025-11-18 19:20:50 -07:00
frytimo
bbe7b9e9b7 Documentation, format class, no modification. (#7628) 2025-11-18 18:49:39 -07:00
Alex
987c6f7cb8 Prevent more PHP warnings (#7609)
* Prevent more PHP warnings

* Update call_broadcast_edit.php

* Update call_center_agent_edit.php

* Update call_flow_edit.php

* Update call_center_queue_edit.php

* Update conference_center_edit.php

* Update conference_room_edit.php

* Update conference_control_detail_edit.php

* Update conference_control_edit.php

* Update conference_profile_edit.php

* Update conference_edit.php

* Update conference_profile_param_edit.php

* Update destination_edit.php

* Update device_edit.php

* Update dialplan_inbound_add.php

* Update dialplan_outbound_add.php

* Update dialplan_add.php

* Update dialplan_edit.php

* Update event_guard_logs.php

* Update extension_setting_edit.php

* Update extension_edit.php

* Update fax_edit.php

* Update fifo_edit.php

* Update ivr_menu_edit.php

* Update phrase_edit.php

* Update ring_group_edit.php

* Update sip_profile_edit.php

* Update stream_edit.php

* Update time_condition_edit.php

* Update var_edit.php

* Update voicemail_edit.php

* Update xml_cdr_search.php

* Update dashboard_widget_edit.php

* Update domain_edit.php

* Update group_edit.php

* Update user_edit.php

* Update gateway_edit.php
2025-11-13 08:37:51 -07:00
markjcrane
7286d4b58d Update permission_exists for multiple permissions 2025-11-06 08:20:46 -07:00
markjcrane
b0eabca1f6 Update check permisisons 2025-11-02 00:22:57 -06:00
markjcrane
bf5bb4f642 Fix multiple PHP warnings 2025-11-01 19:58:21 -06:00
Alex
89a6540158 Use date-fns instead of luxon on dashboard (#7602)
* Use date-fns instead of luxon on dashboard

* Update system_network_status.php

* Update system_cpu_status.php

* Update index.php
2025-10-28 16:53:48 -06:00
Alex
7ff33d6075 Add chartjs streaming plugin (#7601)
* Add chartjs streaming plugin

* Update index.php

* Update active_calls.php

* Update system_network_status.php

* Update system_cpu_status.php
2025-10-28 15:55:42 -06:00
Alex
5bad1703b7 Dashboard: Minor bug fixes (#7597)
* Dashboard: Minor bug fixes

* Update dashboard_edit.php

* Update index.php

* Update device_keys.php

* Update domain_limits.php
2025-10-27 14:15:12 -06:00
Mark J Crane
8d5572a943 If search is not set use an empty string instead of null 2025-10-22 10:04:34 -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
76e2e7d3b7 Remove database app_name and app_uuid (#7562)
- Remove database app_name, app_uuid
  - This is handled automatically by the database class
- Remove redundant database::new()
2025-10-09 17:54:05 -06:00
Alex
4959f6a1e7 Update dashboard.php (#7560) 2025-10-09 16:09:18 -06:00
Alex
e90d47c6e7 Fix dashboard copy button (#7557) 2025-10-08 16:51:26 -06:00
Alex
3bf031b6f5 Dashboard: Adjust icon widget clickable area (#7536)
* Dashboard: Adjust icon widget clickable area

* Update domains.php

* Update registrations.php
2025-10-01 10:25:04 -06:00
FusionPBX
d1baf05891 Remove redundant database instances (#7535) 2025-10-01 08:56:06 -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
frytimo
c9b76df627 Create network usage dashboard widget (#7531)
* Add new dashboard widget system_network_status

* Add new dashboard widget system_network_status

* Initial working commit

* Fix max_points used twice

* Update system dashboard service to send network traffic

* Remove console logging used for debugging

* Remove interface check

* Return instead of exit on a dashboard widget

* Use default value instead of null coalescing operator

* Disable the details state (to be added later)

* Set to Line type only

* Update config.php

---------

Co-authored-by: FusionPBX <markjcrane@gmail.com>
2025-09-24 14:27:10 -06:00
FusionPBX
a690108fb1 Update the user profile URL and label 2025-09-23 15:05:11 -06:00
Alex
a595877cc2 Dashboard: Fix widget label enabled setting (#7524)
* Dashboard: Fix widget label enabled setting

* Update dashboard_widget_edit.php

* Update dashboard_edit.php
2025-09-22 11:19:56 -06:00
Alex
7765fa0839 Dashboard Widget Edit: Only show parent widgets in parent setting dropdown list (#7496)
* Dashboard Widget Edit: Only show parent widgets in parent setting dropdown list

* Update app_languages.php
2025-09-22 09:46:42 -06:00
Alex
be5a03ce2f Security - Use POST method instead of GET for deleting groups (#7494)
* Security - Use POST method instead of GET for deleting groups

* Update user_edit.php

* Update user_edit.php

* Update dashboard_widget_edit.php

* Update dashboard_widget_edit.php

* Update device_vendor_function_edit.php

* Update dashboard_widget_edit.php

* Update device_vendor_function_edit.php

* Update menu_item_edit.php

* Update device_vendor_function_edit.php

* Update device_vendor_function_edit.php

* Update device_vendor_function_edit.php
2025-09-22 09:46:03 -06:00
FusionPBX
7f9064fadb Update boolean toggle and the database boolean type (#7522)
* Change the data type to boolean

* Use boolean values in SQL and Conditional Statements

* Schema Data Types: Drop views so that alter tables statements complete

* Update settings.php

* Add extension for call_screen_enabled

* Gateway handle boolean
Add the boolean toggle
- distinct_to
- caller_id_in_from
- supress_cng
- extension_in_contact
- contact_in_ping

* Update gateways.php

* Update voicemail_edit.php

* Replace the ${caller_id_name} with the extensions caller id name

* Phrase - Edit: Update slide toggle with new select beneath.

* Update the input toggle style

* Set the input_toggle_style_switch as boolean

* Update the input toggle style

* Theme: Adjust CSS to wrap description text on form fields.

* Add domain_uuid and domain_name to the SQL SELECT

* Unset the parameters to fix the next query

* Gateway: Integrate new slide toggle switch.

* Dashboard: Update the input toggle style (#7499)

* Dashboard: Update the input toggle style

* Update dashboard_widget_edit.php

* Update dashboard_edit.php

* Inbound Route - Add: Integrate new slide toggle switch and boolean.

* User Settings: Integrate new slide toggle switch.

* Call Block Edit: Update the input toggle style (#7500)

* Bridge Edit: Update the input toggle style (#7501)

* Update phrases.php

* Update domain_edit.php

* Domain Settings Edit: Update the input toggle style

* User Edit: Update the input toggle style

* Update install.php

* Remove fields marked as deprecated

* Use boolean in the select statement

* Streams: New slide toggle and boolean.

* Streams: Remove unnecessary default.

* Queues (FIFO): New slide toggle.

* Call Detail Records: Update the input toggle style (#7503)

* Call Detail Records: Update the input toggle style

* Update xml_cdr_extension_summary.php

* Update xml_cdr_extension_summary.php

* Update xml_cdr_extension_summary.php

* Call Centers: Update the input toggle style (#7502)

* Call Centers: Update the input toggle style

* Update call_center_agent_edit.php

* Conference Centers: Update the input toggle style (#7506)

* Conference Centers: Update the input toggle style

* Update app_config.php

* Update conference_center_edit.php

* Use boolean data type (#7505)

* Call Flow Edit: Update the input toggle style (#7504)

* Devices: Update the input toggle style

* IVR Menus: New slide toggle.

* IVR Menu: Remove deprected file.

* SIP Profile - Edit: New slide toggle.

* Device Profiles: Update the input toggle style

* Ring Groups - List: Fix syntax.

* Theme: Fire onchange event when switching slide toggle control.

* Device Vendors: Update the input toggle style

* Update enabled boolean

* Update device_edit.php

* Ring Groups: New slide toggle.

* Update domain_edit.php

* Email Templates: Update the input toggle style

* Header: Correct default value on input toggle style.

* Default/Domain/User Settings: Adjust Select option label for better clarity.

* Use true boolean types for switch theme toggle or drop-down box (#7507)

* Groups: Update the input toggle style

* Conference Controls: Update the input toggle style (#7509)

* Conference Controls: Update the input toggle style

* Update conference_control_edit.php

* Update conference_control_details.php

* Update conference_control_detail_edit.php

* Conferences: Update the input toggle style (#7511)

* Use true boolean types for switch theme toggle or drop-down box (#7513)

* Dialplans: Update the input toggle style
Also updated outbound route add

* Ring Group: Only adjust ring group forward destination top margin when slide toggle enabled.

* Default/Domain/User Settings - List: Adjust for new 'Select Box' label on input_toggle_style value.

* Use true boolean types for switch theme toggle or drop-down box (#7514)

* Call Forward / Follow Me: Minor javascript adjustments to mirror previous behavior.

* Ring Groups [Dashboard]: New slide toggle.

* Get the contacts details with a seperate SQL Query

* Remove debug info

* Destinations: Update the input toggle style

* Conference Profiles: Update the input toggle style (#7515)

* Conference Profiles: Update the input toggle style

* Update conference_profiles.php

* Update conference_profile_params.php

* Update conference_profile_param_edit.php

* Update conference_profile_edit.php

* Extensions: Update the input toggle style

* Contacts: Update the input toggle style (#7517)

* Contacts: Update the input toggle style

* Update contact_address_edit.php

* Update contact_attachment_edit.php

* Update contact_edit.php

* Update contact_email_edit.php

* Update contact_phone_edit.php

* Update contact_relation_edit.php

* Update contact_setting_edit.php

* Update contact_url_edit.php

* Update contacts.php

* Voicemails: New slide toggle.

* Voicemail Greeting: New slide toggle.

* Modules: New slide toggle.

* Recordings: New slide toggle

* Variables: New slide toggle.

* Time Conditions: New slide toggle.

* Extensions - List: Remove invalid column name.

* Extension Settings: New slide toggle.

* Number Translations: New slide toggle and boolean.

* Sofia global settings: Update the input toggle style

* Update alter table convert to boolean

* Fix contact relation search (#7518)

* Sip Profile Edit: Fix setting enabled labels (#7519)

* Sip Profile Edit: Fix setting enabled labels

* Update sip_profile_edit.php

* Update dialplan_edit.php (#7520)

* Update SQL queries to use true/false for contact primary settings (#7521)

* Update SQL queries to use true/false for contact primary settings

* Update contacts_vcard.php

* Update email.php

* Update totp.php

* Update contact_url_edit.php

* Update contact_email_edit.php

* Update contact_address_edit.php

* Update contact_attachment_edit.php

* Update contact_phone_edit.php

* Add a database views method

* Add database view groups

* Add database users view

* Add database call_recordings view

* Update users.php

* Add  database view call block

* Update schema to use the database views method

* Update conference.conf.lua boolean

* Update directory.lua boolean

* Update callcenter.conf.lua agent_status boolean

* Update sofia.conf.lua boolean

* Update number translations lua boolean

* Update directory.lua boolean

* Update group_call.lua fix the cache

* Update reverse-auth-lookup.lua boolean

* Update directory.lua boolean

* Use concat instead of ||

* Update index.lua

---------

Co-authored-by: fusionate <nate@fusionpbx.com>
Co-authored-by: Alex <alex@fusionpbx.com>
Co-authored-by: frytimo <tim@fusionpbx.com>
2025-09-20 18:42:05 -06:00
Alex
d45740f8fb Dashboard: Fix php warnings (#7492)
* Dashboard: Fix php warnings

* Update dashboard_widget_list.php

* Update dashboard_widget_edit.php

* Update dashboard.php

* Update parent.php

* Update footer.php

* Update active_calls.php

* Update active_calls.php
2025-09-12 11:37:45 -06:00
Alex
c4938ff0d4 Dashboard Widget Edit: Fix saving rgba color values (#7490) 2025-09-10 16:49:59 -06:00
Alex
abf431ea3b Dashboard Edit: Add widget group assign/unassign feature (#7489)
* Dashboard Edit: Add widget group assign/unassign feature

* Update dashboard.php

* Update app_languages.php

* Update index.php

* Update dashboard_widget_edit.php

* Update dashboard_widget_list.php

* Update dashboard.php
2025-09-10 14:55:59 -06:00
Alex
c46a1e22f5 Add dashboard filter by name via GET method (#7484)
* Add dashboard filter by name via GET method

* Update index.php
2025-09-09 12:44:17 -06:00
Alex
e8681737dc Add ability to create multiple dashboards (#7483)
* Add ability to create multiple dashboards

* Create dashboard_widget_list.php

* Create dashboard_widget_edit.php

* Update dashboard_edit.php

* Update dashboard_config_json.php

* Update dashboard.php

* Update app_languages.php

* Update app_defaults.php

* Update app_config.php

* Update dashboard.php

* Create config.php

* Update content.php

* Update icon.php

* Update parent.php

* Update template.php

* Update config.php

* Update config.php

* Update domains.php

* Update config.php

* Update active_calls.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update call_forward.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update domain_limits.php

* Update caller_id.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update registrations.php

* Update ring_group_forward.php

* Update config.php

* Update config.php

* Update switch_status.php

* Update config.php

* Update system_counts.php

* Update system_cpu_status.php

* Update system_disk_usage.php

* Update system_services.php

* Update system_status.php

* Update config.php

* Update config.php

* Update voicemails.php

* Update config.php

* Update missed_calls.php

* Update recent_calls.php

* Update dashboard_widget_edit.php

* Update app_languages.php

* Update dashboard_widget_edit.php

* Update index.php

* Update parent.php
2025-09-08 17:33:29 -06:00
Alex
00acc86a3a Update dashboard_edit.php (#7474) 2025-08-27 18:44:29 -06:00
Alex
34a78df7a6 Create dashboard_config_json.php (#7472)
* Create dashboard_config_json.php

* Update dashboard_config_json.php
2025-08-27 18:08:46 -06:00
Alex
ee4132468b Dashboard Edit: Update what chart settings to display when a dashboard path is selected (#7473)
* Dashboard Edit: Update what chart settings to display when a dashboard path is selected

* Update dashboard_edit.php
2025-08-27 17:56:34 -06:00
Alex
efdb23ee4b Dashboard Edit: Fix logic for determining which settings should be displayed (#7469)
* Dashboard Edit: Fix logic for determining which settings should be displayed

* Update dashboard_edit.php
2025-08-26 17:50:04 -06:00
Alex
bacef6f892 Update icon color label (#7468)
* Update icon color label

* Update app_languages.php
2025-08-26 13:10:45 -06:00
FusionPBX
ccb4b2a5bf Use the settings class get method 2025-08-26 13:02:14 -06:00
Alex
18634417fd Dashboard Edit - Correctly display the chart type options (#7465)
* Dashboard Edit - Correctly display the chart type options

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update config.php
2025-08-20 16:20:04 -06:00
Alex
3794391217 Dashboard Edit - Replace chart type dropdown with icon buttons (#7462)
* Dashboard Edit - Replace chart type dropdown with buttons with icons

* Update css.php

* Update template.php
2025-08-19 16:18:28 -06:00
Alex
324c007fd4 Dashboard - Automatically increase parent widget height if there is overflow (#7460)
* Remove scroll bar
2025-08-16 07:57:43 -06:00
Alex
13fcba2b85 Dashboard - Fix child widget styling (#7452)
* Dashboard - Fix child widget styles

* Update parent.php

* Update config.php
2025-08-07 12:22:31 -06:00
Alex
7d7876bb33 Dashboard - Add additional row span for detail expand button (#7450)
* Dashboard - Add additional row span for detail expand button

* Update css.php

* Update template.php
2025-08-06 17:03:00 -06:00
Alex
b64ebb374d Dashboard - Use a class to determine the row span (#7451)
* Dashboard - Use a class to determine the row span

* Update parent.php

* Update icon.php

* Update content.php

* Update domains.php

* Update dashboard_edit.php

* Update missed_calls.php

* Update recent_calls.php

* Update voicemails.php

* Update system_counts.php

* Update system_cpu_status.php

* Update system_disk_usage.php

* Update system_services.php

* Update system_status.php

* Update system_services.php

* Update switch_status.php

* Update registrations.php

* Update ring_group_forward.php

* Update caller_id.php

* Update domain_limits.php

* Update call_forward.php

* Update active_calls.php
2025-08-06 17:01:09 -06:00
Alex
86307eea73 Prevent parent widgets from being dragged into another parent (#7449) 2025-08-05 16:29:10 -06:00
Alex
9dc4ee9046 Dashboard - Use the uuid instead of name for widget ids (#7443)
* Dashboard - Use the uuid instead of name for widget ids

* Update active_calls.php

* Update domain_limits.php

* Update caller_id.php

* Update registrations.php

* Update ring_group_forward.php

* Update switch_status.php

* Update system_counts.php

* Update system_cpu_status.php

* Update system_services.php

* Update system_status.php

* Update voicemails.php

* Update missed_calls.php

* Update recent_calls.php

* Update content.php

* Update icon.php

* Update parent.php

* Update domains.php
2025-08-01 11:51:34 -06:00
Alex
b1dd179f85 Dashboard - Minor bug fixes (#7440)
* Dashboard - Minor bug fixes

* Update config.php

* Update config.php

* Fix label background color

* Update dashboard_edit.php

* Update parent.php

* Update index.php

* Update index.php
2025-07-31 17:18:33 -06:00
Alex
cf32511d61 Dashboard - Use CSS grid in parent widgets (#7437)
* Dashboard - Use CSS grid on parent widgets

* Update parent.php

* Update css.php

* Update template.php
2025-07-30 10:58:11 -06:00