Commit Graph
358 Commits
Author SHA1 Message Date
3e1dc3c886 fix: replace strtolower/strtoupper with locale-independent wrappers (#6717)
* cleanup: remove unreachable defensive error logs in aggregate graph item validation

* fix: replace strtolower/strtoupper with locale-independent wrappers

PHP 8.5 deprecates locale-sensitive strtolower() and strtoupper().
Add cacti_strtolower() and cacti_strtoupper() wrappers that use
mb_strtolower/mb_strtoupper with explicit UTF-8 encoding, then
replace all 185 call sites across 65 files.

Existing mb_strtolower() calls (email normalization) are left as-is
since they already specify encoding explicitly.

Includes 18 Pest tests covering ASCII, UTF-8, protocol names, config
values, hex strings, NaN detection, and file extension patterns.

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* fix: correct docblock references and month_shift() strpos check

Fix docblocks to reference strtolower()/strtoupper() (the deprecated
PHP builtins) instead of the wrapper names. Fix month_shift() to use
strpos() !== false instead of > 0 so 'month' at position 0 is matched.

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* chore: drop unrelated lib/api_aggregate changes

Keep PR scope focused on the issue for this branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: TheWitness <thewitness@cacti.net>
2026-03-05 19:51:02 -05:00
TheWitness 27919c50d7 Updating Copyrights to 2026 (#6578) 2026-01-28 16:11:10 -05:00
TheWitnessandCopilot b993471579 Fix #6539 - Allow Standard Cacti Log Files to be Rotated on Demand,PHPdoc, and Typing (#6540)
* Fix #6539 - Allow Standard Cacti Log Files to be Rotated on Demand from the Cacti UI

* QA: php-cs-fixer updates and documentation for lib/database.php

* QA: Update .gitignore for composer files

* QA: Update .gitignore for composer files

* QA: Back off .gitignore change its duplicated

* QA: Fix typing of db_has_permissions

* QA: Fixing typing issue in db_format_index_create

* Update lib/clog_webapi.php

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* QA: Fix additional code issues

* QA: Applying more defaults to add device

* QA: Fix at the database layer

* QA: Fixes based upon automated testing

* QA: Fix at the database layer

* QA: After new SQL checking

* QA: Skip MacTrack oui database download warnings

* QA: Fixing type issue

* QA: Recommendation from Copilot

* QA: Recommendation from Copilot

* QA: Recommendation from Copilot

* QA: Recommendation from Copilot

* QA: Some minor changes to avoid errors in testing

* QA: Unused variable

* QA: Recommendation from Copilot

* QA: Recommendation from Copilot

* QA: Recommendation from Copilot

* QA: Minor introduced code defect

* QA: Adding some unifying space around concatination

* QA: Consistent comments and new function alias'

* QA: Multi-line comment corrections

* QA: Fix SQL Style

* QA: Missed one function alias

* QA: PHPStan Level 2 and PHPDoc fixes

* QA: PHPStan Level 2 and PHPDoc Fixes

* QA: PHPStan Level 6 Fixes

* QA: Fix lib/xml.php to PHPStan Level 6

* QA: Wrong grep -v

* PHPStan Level 6 for lib/vdef.php

* PHPStan Level 8 for lib/time.php

* QA: Raise PHPStan to Level 6 for lib/database.php

* QA: Remove @deprecated tag from grv()

* QA: Switch to htmle() alias over html_escape()

* QA: More addressing PHPStan issues at Level 6

* QA: Change recommended by Copilot for Readability

* QA: More PHPStan fixes

* QA: More PHPStan fixes

* QA: More PHPStan fixes for lib/utility.php

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: Raise PHPStan to Level 6 More Functions

* QA: More PHPStan fixes at Level 6

* QA: Some phpseclib3 fixups to update to latest

* QA: More fixups for graphing for magic strings

* QA: More PHPStan fixes at Level 6

* QA: Fixing order string type on get_allowed_graphs()

* QA: Fixing improper use of print

* QA: Optimization of color_templates

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Copilot recommendation

* QA: Raise PHPStan to Level 6 More Functions

* QA: Issues insalling Cacti

* QA: Issues insalling Cacti

* QA: Issues insalling Cacti

* QA: Issues insalling Cacti

* QA: Issues insalling Cacti

* QA: Issues testing Cacti

* QA: Copilot recommendation

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: More PHPStan fixes at Level 6

* QA: Installer failing

* Undo ownership changes to remove tar errors

* QA: Updates after php-cs-fixer

* QA: Adding code checks to syntax checking

* QA Change syntax flow language

* QA: Reduce the number of cures

* QA: Use sequentional option

* Change runner to self-hosted for check job

* Fix typo in OS version in workflow file

* Add Git installation step in workflow

Added step to install Git if not already installed.

* Add '-y' flag to apt-get install and update commands

Updated apt-get commands to include '-y' for automatic confirmation.

* Change workflow OS version to 'ubuntu-latest'

Updated the workflow to use 'ubuntu-latest' instead of 'ubuntu:latest' and modified the 'runs-on' configuration.

* Remove sequential option from phpcsfixer script

* Remove PHPCS fixer step from workflow

Removed PHP coding standards check from workflow.

* Move code checks to before plugins

Moving these core checks to before the plugins are installed as we really want to check only the base Cacti here.

* Add Composer validation and caching to start of workflow

* QA: Addressing PHPStan additional

* QA: Restore composer lock file

* QA: Addressing PHPStan additional

* QA: Addressing PHPStan additional

* QA: Complete LDAP Project

* QA: php-cs-fixer doing it's thing

* QA: Syntax is already happening in PHPStan

* QA: The md5 function no longer exists

* QA: Update after ldap changes

* QA: Undo that last password hack

* QA: Attempting to switch to MariaDB 11.8

* QA: Attempting to switch to MariaDB 11.8

* QA: Resolving some issues with PHP8.4

* QA: Resolving some issues with PHP8.4

* QA: Add PHP8.5 to the matrix

* QA: Removing PHP8.5 due to dependency issues

* QA: Add the DB version to the testing output

* QA: Switch back to MySQL for the moment

* QA: More fidelity in reporting

* QA: The pipe must be mixed

* QA: Moving audit_schema.php changes from 1.2.x

* QA: Moving audit_schema.php changes from 1.2.x

* QA: Restore mysql monitoring

* QA: php-cs-fixer issues

* QA: Attempt to roll back to MariaDB 10.6

* QA: Attempt to fix check_all_pages.sh

* QA: Make installer functional again

* QA: Fix installer php-cs-fixer issues

* QA: Type to a string

* QA: Get the database version correctly

* QA: Fix issue with reports in check_all_pages.sh

* QA: Check the server version in the right place

* Feature: Support SHA256 as a new hash for passwords

* QA: Function definition and return typing audit

* QA: Refinement of form types

* QA: Refinement of form types

* QA: Consistency of comments

* QA: Issues with php-cs-fixer and more comments

* QA: More typing issues

* QA: php-cs-fixer on merge conflict resolution

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-25 10:13:56 -05:00
Browniebraun 1627c7a150 Font Awesome Icons to Tabler Icons migration 2025-12-16 20:27:05 +01:00
TheWitness b9334a15d9 QA: Updates for files for php-cs-fixer and some php-doc changes 2025-11-18 21:01:15 -05:00
TheWitness c73274c8af QA: Unable to save contents of pages due form error 2025-08-18 23:10:56 -04:00
TheWitness 8b9c29708c QA: Finishing up buttons 2025-07-13 12:58:53 -04:00
TheWitness 9ea7e73c2a QA: Convert from input to buttons 2025-07-13 12:30:30 -04:00
Browniebraun 669107018d MidWinter
- start replacing input tags by real HTML buttons.
- introduce usage of form attribute.
2025-07-13 07:31:09 +02:00
TheWitness f4fd582b66 Fix: #6270 - Issues with form previous value in thold
Select list using special characters for the current value can not be displayed in thold
2025-06-22 23:25:04 -04:00
TheWitness cdf0d5f27e Fixing more PHPStan Issues 2025-03-23 15:16:09 -04:00
TheWitness 685d4b9357 Start addressing PHPStan Issues 2025-03-23 14:09:11 -04:00
TheWitness e5c4015e0e QA: Remove most references to $config
This removes most entries to $config in the base code.  A few new constants were defined to achieve this:

* CACTI_CONNECTION - The status of the current connection
* CACTI_CSRF_SECRET - The path to the csrf secret file
* CACTI_PHP_SNMP - True if php-snmp is installed
* CACTI_WHITELIST - The path to the Cacti Whitelist file if defined

I also moved several $config['poller_id'] to the existing POLLER_ID and move a number of $config['is_web'] to the existing CACTI_WEB constants.

There remain a few artifacts in the code.  They will be handled in a separate commit.
2025-03-22 16:48:59 -04:00
TheWitness 9f7ce2c53a Fix: #6172: Quoting issues leading to translation issue in form messaging in Chinese language 2025-03-17 10:50:38 -04:00
TheWitness 2c779273f9 Copyright Updates and PHP-CS-Fixer updates 2025-03-09 14:34:19 -04:00
TheWitness ea5429c03a Fixing some invalid lint updates 2025-03-09 13:11:05 -04:00
TheWitness ead1c4c40f QA: Wordsmithing and friendly_name unset warning 2025-03-09 11:01:35 -04:00
Petr Macek 7e264ef2dc checkbox is displayed always on in some cases (#6164)
* checkbox is displayed always on in some cases

* update
2025-03-06 16:05:01 -05:00
Jimmy ConnerandTheWitness 65ab16f5cf Start converting to newer PHP Syntax and Functions (#6103)
* Add Rector

* Add Rector

* Fix "Cashed" misspelling

Also harmonize the phrase with the one below it

* Fix implode error in db_table_create

Only relevant when multiple primary keys

* Fix auth issue, parentheses in the wrong location

Was causing too many arguments to be sent to cacti_sizeof which only take 1, instead of get_allowed_devices.

* Fix issue with session_var not properly using class variable

* Fix pass by reference error in get_allowed_devices

get_allowed_devices has a pass by reference on the "total_rows" field.  It is used in several places to pass the total_rows back to a counter.  Here though, we are passing a number directly to the function, which errors out with "Uncaught Error: get_allowed_devices(): Argument #4 ($total_rows) cannot be passed by reference".  So we will just place a dummy variable in front to catch the pass.

This wasn't caught before because the previous parentheses issue.

* Fix undefined variable "field_array" in html_filter

* Fix undefined function 'get_nfilter_filter_request_var'

* Fix undefined variable 'resizable'

I corrected the function parameter, as that was technically the incorrect spelling

* Fix invalid variable $user_id

* Fix undefined vars in spikekill class

* Fix copy and paste error

Oops

* Forgot to use the dummy variables

* Add missing $

Oops

* Start converting to newer PHP Syntax and Functions

* Test fixing the workflow by install composer

* Lets not valid the composer file right now
Seems we have a few things to fix it in

* Validate composer

* Lite formating changes

* lite formatting

* lite formatting

* lite format changes

* lite format changes

* lite format changes

* lite format changes

* lite format changes

* lite format changes

* lite format changes

* lite format changes

---------

Co-authored-by: TheWitness <thewitness@cacti.net>
2025-02-23 15:14:54 -05:00
Browniebraun d88d3acd30 reverting FontAwesome till better solution has been identified. 2025-01-15 23:04:14 +01:00
Browniebraun 5be7d7f18b Migrating icons from FontAwesome to Tabler 2025-01-05 20:58:36 +01:00
TheWitness b20a3f6334 QA: Add request variables to callback, fix predefined timespan callback
* These two little filters make drop_callback be able to append request variables to the various methods.
* The predefined_timespan should send all variables.
* rfilter should come over as base64_encoded
* Allow the filter to have the post method by default
2024-12-23 12:34:46 -05:00
TheWitness 7a1e1282f3 QA: Implement Filter Class for Tree View
* Also fixed the default sort order when ordering Graphs.
* Preview it still TBD, but now it should be pretty easy
* Moved the multi-select function to layout.js and out of lib/html.php
2024-12-22 22:22:41 -05:00
TheWitness ddeb6b0297 QA: Convert SaveRow to DIV 2024-12-21 13:36:16 -05:00
TheWitness 5328343189 QA: Add display_name to the drop callback
* This may be required once @browniebraun is done with his changes
2024-12-18 19:05:12 -05:00
TheWitness d76ff9cc0b QA: First Round of Page Filter Updates
* This first round of implementing the filter class catches a large chunk of our existing filters, though I've only implemented 3 pages in this commit, others will come and the filter class will be enhanced as I go.
* For the most part, this results in a major code html reduction by using the CactiTableFillter class.
* The existing filters, the complicated ones, in the end will just have to receive slight modifications to work in the new design.
* There still remain some JavaScript issues to work through though.
* This also moves these form's to 100% div based.
2024-12-17 14:30:24 -05:00
TheWitness 8a262e87c0 QA: Fixing #6006 - form_save_buttons() missed commit
* This part of the commit was lost.
2024-12-16 13:34:02 -05:00
TheWitness c2e1840e31 QA: Fix: #5991 - Return button in Edit Profile Unreliable
* The Return button on the Edit Profile Screen is unreliable
2024-12-13 11:30:59 -05:00
Jimmy Conner ad07471bb1 Lots of PHPDoc formatting and cleanup
Lots more to go
2024-12-09 02:50:06 -06:00
TheWitness 91e4307965 QA: Testing Graph Removal Exposed issue with Radio Buttons
* This was the result of moving from the custom api to draw_edit_form.
2024-12-04 21:13:19 -05:00
TheWitness 019c35c985 Fix: #5954 - Add Check boxes to Change Form
* This adds to the 'extra' attribute of the form confirmation options called 'confirm' = true that will disabled the selection of the extra until you toggle the checkbox.
* Additionally removing more tables.
* New enhancement leverage draw_edit_form() function to be more consistent with formatting.
2024-12-04 15:11:49 -05:00
TheWitness 87c9b17bfa Fix #5952 - New Form dropdown type drop_icon
* Allows the dropdown to include font-awesome representations
2024-12-04 13:03:37 -05:00
TheWitness 9d47e64d79 QA: Error fields were being cleared pre-maturely 2024-11-29 13:36:21 -05:00
TheWitness 2f6e8651e5 QA: Error class needed a leading space 2024-11-11 09:56:44 -05:00
TheWitness 0aa28c852f QA: Allow storing of GitHub personal access tokens
* Going to use this for future plugin magic
2024-11-01 15:27:32 -04:00
TheWitness ff8221cdf2 QA: Fix the $cancel_rul to include the full path
* This was causing edit profiles 'Return' button to fail when called from a plugin.
2024-10-30 17:00:32 -04:00
TheWitness e165036931 Fixing #5804 - Remove Classic Theme
* Remove Classic theme from Cacti
2024-10-13 19:03:21 -04:00
TheWitness 8a58c8f0ec Fixing #5780: Undefined array key "default" rendering forms
* Undefined array key "default" in file html_form.php
2024-06-29 11:39:19 -04:00
TheWitness f2e864e167 Additional QA on #5658
Minor visual issues
2024-04-20 07:26:00 -04:00
TheWitness 1a5e56ec80 QA: Fixing #5658 - Cacti Warnings with Plugin Actions
Error adding multiple thresholds to a device
2024-04-20 07:11:50 -04:00
Petr Macek 1587d2e9a1 checkbox doesn't work, only label is active (#5682) 2024-03-15 16:34:14 -04:00
TheWitness 1aa72d24c9 QA: Update Copyright to 2024 2024-02-03 14:18:57 -05:00
TheWitness 0d842dd7e5 QA: Migrate graphs.php to new confirmation API
* Finalizing the confirmation API adding special additional tags: return, rmessage for a return even though the object list is non-zero
* Fixing issues with adding objects to reports
* Adding new hook for confirmation API
* Properly supporting legacy hooks that provide their own confirmation HTML.
2023-11-25 14:03:56 -05:00
TheWitness 589c4b2813 QA: Implement configmration API for data_sources.php
* We had to add custom hooks for custom actions here
2023-11-23 19:40:31 -05:00
TheWitness 1bf55a1359 QA: Fixing #5598 - Device Change Logic 2023-11-23 18:34:38 -05:00
TheWitness 7357fa0af1 QA: Convert host.php to confirmation api
* ToDo: Update themes for new CSS
2023-11-23 14:05:44 -05:00
TheWitness dbecaa058e QA: Add automation_networks.php and checkbox support
The Confirmation API is almost complete now.  Just a few cases to go.
2023-11-19 10:41:14 -05:00
TheWitness b1af42e748 QA: Converting Aggregate Graphs to new confirmation API 2023-11-18 22:56:54 -05:00
TheWitness b2f3403fce QA: Modify confirmation API to add header and footer
* This change is required for the next set of commits's for things like "change settings" on the Device page, where we need to inject a form that includes the settings as a header.
2023-11-14 09:10:44 -05:00
TheWitness 64bc98a596 QA: Additional form confirmation changes and API adoption
One more API modification to provide better alignment on the page.
2023-11-13 20:51:35 -05:00