Commit Graph
328 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
Thomas VincentandTheWitness 165ec47c3c Replace deprecated (double) cast with (float) (#6631)
* fix: replace deprecated (double) cast with (float)

PHP 8.4 deprecates the non-canonical (double) cast. Replace all 11
instances with the canonical (float) equivalent. No behavioral change.

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

* fix: use float literals instead of no-op left-side casts

Left-side casts like (float) $var = 0 are no-ops — the cast is
discarded before assignment. Use 0.0 float literals instead.

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

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
Co-authored-by: TheWitness <thewitness@cacti.net>
2026-02-23 15:59:25 -05:00
TheWitness cd438569e9 Fixing issue with boost type definition and PSR (#6615)
* Fixing issue with boost type definition and PSR

* QA: Wrong type in create_graph_custom_data_compatible function

* Fixing type definition
2026-02-14 08:14:20 -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
TheWitness 3d7cd822b8 QA: Fixing additional files phpdoc specs 2025-11-18 23:22:24 -05: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 9e28981dbf QA: Fix#6313 - Errors when editing multiple devices 2025-08-27 10:32:16 -04:00
TheWitness d2624514cc Restore parts of lib/rrd.php move/rename a function 2025-03-23 10:23: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 2c779273f9 Copyright Updates and PHP-CS-Fixer updates 2025-03-09 14:34:19 -04: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
Mark Brugnoli-Vinten 340dd3c692 QA: Fix issue with utility comparison 2025-01-29 17:38:35 +00:00
TheWitness fd0ed1ca00 QA: CDEF, VDEF, and GPRINT counts wrong 2024-12-30 21:44:12 -05:00
Jimmy Conner ad07471bb1 Lots of PHPDoc formatting and cleanup
Lots more to go
2024-12-09 02:50:06 -06:00
TheWitness 22b85e1622 Fix: #5966 - Add snmp retries at the device level
* This covers all the built in scripts.  Several packages will need rebuild
2024-12-06 23:07:32 -05: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 6beba95585 QA: Update to more consistent method 2024-11-29 20:19:10 -05:00
TheWitness e98f1c0339 QA: Missed on instance of updating data_input_data columns 2024-11-29 20:11:13 -05:00
TheWitness 9656854053 QA: Undefined variable when saving Data Template 2024-11-29 14:00:14 -05:00
Linegod a2c4d83e8f typos 2024-11-17 15:46:38 -06:00
TheWitness 2237c29780 QA: Install testing on Ubuntu - Make curl mandatory 2024-11-17 16:17:18 -05:00
TheWitness a926aed311 Feature: Improve the re-population of the poller cache
-feature: Improve the performance of the repopulation of the poller cache
2024-08-18 15:32:29 -04:00
TheWitness a2b7c89412 Fixing #5768 - Escaping Data Query Indexes with Space
* Cacti does not properly escape Data Query indexes that include a space
2024-06-20 08:50:06 -04:00
TheWitness a0f39d1f21 QA: Fixing #5726 - Poller Cache not updating
Poller cache is not updating when changing hostname
2024-04-15 18:35:41 -04:00
TheWitness 1aa72d24c9 QA: Update Copyright to 2024 2024-02-03 14:18:57 -05:00
Petr Macek 4e8350efcc fix wrong variable and few SQL queries (#5646) 2024-01-27 14:54:24 -05:00
Eduardo Mozart de Oliveira 215d6cdf68 Fix INNODB Unset message on MariaDB (#5637)
Similar to https://github.com/Cacti/cacti/issues/5030
The original scripts checks if MariaDB is 11 to not check if INNODB variable doesn't exists, but it was removed on 10.10 and not on 11. This fixes an issue that fixes the UNSET message on Cacti 1.1.25 on Windows All-in-One installer.
2024-01-27 14:52:12 -05:00
TheWitness 9b2d2266bc QA: Minor for to #5543
If there are no object ID's no need re-calculate.
2023-11-14 08:59:16 -05:00
TheWitness 2029e759b2 QA: Fixing #5543 - 500 Errors with now Row Counting 2023-11-13 17:28:14 -05:00
TheWitness 46a0c7aefb QA: #4811 - Ensure device totals are updated
* Was missing the data for Device Level changes.
2023-10-15 13:14:49 -04:00
TheWitness 14ca928afa QA on #4811 - More cases of caching updates
* The caching is not working as expected at the moment, but it'll get there.
2023-10-15 12:27:21 -04:00
TheWitness 5ea1418b4e Additional Changes for #4811 - Caching updates
* This adds automation at the device level for add/remove object.
2023-10-15 11:56:58 -04:00
TheWitness 412e2ea3e5 QA: For #4811 - Start creating a diff function for objects
* We have the function to 'remove' objects
* We don't have a function that allows a diff between cache updates
* Use the diff function instead of handling all sorts of add/remove scenarios for single device actions.
2023-10-15 11:13:49 -04:00
TheWitness 8ea0f9cf61 Issue #4811 - Additional Row Cache Operations
This change is the prototype of adjusting row cache values for device actions.  There still may be additional modifications when it comes to Graphs and Data Source Removal.  Still working on that as well as Template adjustments.
2023-10-14 17:26:35 -04:00
TheWitness 8a9827d8e9 Fixing #4811 - Add Device counts to cache 2023-10-01 23:31:46 -04:00
TheWitness e859b31e8f Fixing #4811 - Large Scale Performance Optimizations
First phase of this change.  Second phase will be to provide various drilldowns.
2023-10-01 18:55:33 -04:00
TheWitness 229fa03e9b QA: Two additional QA Items (#5473)
* QA: Broken Function

* QA: Two additional QA Items

- Do a check for IP address as dns_get_records() does not have a timeout and I don't use DNS
- Properly display information about MariaDB 11.
2023-09-06 19:41:43 -04:00
netniV 5d7c01e489 PHP configuration file may not have expected settings (#5372)
CLoses #5372
2023-06-12 16:20:27 +00:00
TheWitness deb3f382d6 Fixing #5225 - Database Recommendation issues.
When your Database server has TB of memory, memory calculation returns incorrect data in Cacti
2023-04-17 18:41:28 -04:00
TheWitness 92db28f90d QA: Port additional issue resolution for #5279 to develop 2023-04-03 08:15:06 -04:00
TheWitness 7f1382fb71 Porting #5254 - some snmp values wrong in poller cache
Created a data source template to specify the snmp port, but it doesn't seem to work properly
2023-04-01 11:59:46 -04:00
TheWitness ca7a352286 QA: Porting 1.2.24 Changes back to the Develop Branch (#5246) 2023-02-24 03:48:31 +00:00
Mark Brugnoli-Vinten 32ba2f19f4 Update copyright year for 2023 2023-01-03 20:34:26 +00:00
TheWitness 34f52e6c6a Fixing #5121 and porting #5117 from 1.2.x
Still have an issue installing, getting past the PHP Binary Path, but other errors have cleared.
2023-01-01 12:58:29 -05:00
Mark Brugnoli-Vinten 8b29d12cc9 Define cacti system paths as constants for better code checking (#5120)
This also provides a full run of src-fixer against all files to
ensure all code is now in alignment.

Closes #5120
2023-01-01 01:03:15 +00:00
TheWitness bbe61d0e4d QA: Add two new required modules 2022-12-29 12:12:41 -05:00
Mark Brugnoli-Vinten c8157e3cbb Switch to constants for common session/cookie options 2022-12-21 10:53:53 +00:00
TheWitness d5d5afedb8 Fixing #5030 - Unset innodb_version
Installer shows innodb unset
2022-12-04 14:36:56 -05:00
netniV b16517cd55 Add warning about unsupported PHP versions 2022-11-26 22:41:49 +00:00