Observium Changelog

Development (Next Release)

284
commits
41,502
lines added
14,873
lines removed
26,629
net change

🚧 Next Release (Development)

In development β€’ 284 commits since r14182
πŸš€ Included Development Changes (284 commits):
🎯 Major Features:
  • r14466: Improved poller wrapper. Removed compatability for python 2.x. Added default utf8 charset for db connection. Added correctly close and clean db for prevent stale connections with early exit. +668/-641
  • r14434: Added basic os support for Aten IP KVM (OBS-5138). +61/-0
  • r14364: BFD (Bidirectional Forwarding Detection) monitoring
    • Polling: BFD-STD-MIB, CISCO-IETF-BFD-MIB, JNX-BFD-STD-MIB, Alcatel, Huawei, Juniper
    • Session state tracking with lifecycle, flaps, peer correlation, VRF support
    • Web UI: overview, sessions, state history
    • Graphs: session states, intervals, packet statistics
    • Schema: bfd_sessions, bfd_neighbors, bfd_vendor_data tables
    +3,030/-20
  • r14207: Add STP polling module and UI elements. Also extend generic_definition graph renderer to accept more tags from vars/auth.inc.php. +6,541/-40
✨ New Features:
  • r14387: Add crude "source port" scoring/guessing system to mac address search. +180/-1
  • r14384: Switch device port/neighbour map to cytoscape. Add dagre js libraries. +630/-5
  • r14382: Add JSON billing data endpoint +90/-0
  • r14366: Add missing BFD include +179/-0
  • r14194: Add OUI lookup table and function +61/-0
  • r14190: Add some new UI element generation functions +165/-0
⚑ Improvements:
  • r14440: Unified set entity unit by definitions. +52/-36
  • r14431: VRFs page - modernize view with device icons, remove deprecated HTML attributes, add proper escaping +105/-17
  • r14430: BGP peers table - prevent table expansion with CSS overflow handling on long hostnames and AS descriptions +5/-4
  • r14429: BGP peers table - add device icons, remove redundant AS number, adjust column widths +10/-7
  • r14428: Navbar reorganization - merge Layer 2/Routing into unified Network menu, BFD improvements +105/-112
  • r14426: BFD navbar - simplify to single 'BFD' link, use sprite-connected icon, reposition after CEF/VRFs +13/-13
  • r14424: BFD sessions view - display IPv6 addresses in condensed format +4/-4
  • r14419: Global VLAN pages - 8-metric status panel, port breakdown badges, device table enhancements, topology A/B-end terminology, proper link status detection +113/-45
  • r14418: VLAN metrics - fix port coverage calculation, hybrid port double-counting, add consistent badge styling +85/-32
  • r14404: Restore Opsgenie v1 API and add separate v2 API transport - both now available +192/-132
  • r14403: Migrate Opsgenie to v2 API with backward compatibility for legacy recipients field +53/-27
  • r14401: Notification system - add recovery config support and custom preprocessing +86/-38
  • r14397: Migrate OpsGenie integration to API v2. (API v1 seems to have stopped working). Add some better handling of tags/arrays to the notification pipeline. +102/-27
  • r14393: Improved array_tag_replace() and array_str_replace() functions for accurate string replacements and debugging ability. Added array_tag_replace_clean() function variant for use where required to remove unused tags. Added many new unit tests for these functions. +420/-179
  • r14381: Improve billing charts a little. Add JS/CSS for uPlot. +164/-10
  • r14380: Add ability to delete old pollers with optional reassignment of devices to another poller. +200/-8
  • r14358: UI changes for transport rework and a few foreach() variable cleanups to related code. +30/-28
  • r14357: Notification/Transport System Rework
    • NEW: Unified notification dispatcher (includes/notifications.inc.php)
    • NEW: 45 transport definitions in includes/transports/ (definition-based architecture)
    • Enhanced HTTP processing with convert_template_newlines() for proper \n handling
    • Enhanced string_transform() with new actions: base64_encode/decode, json_decode, hash, substring, sprintf, conditional_map
    • Updated legacy transports (email, mattermost, slack) for compatibility
    • Moved transport definitions from single file to individual files
    • Added transport auto-loader in includes/functions.inc.php
    +4,603/-2,372
  • r14356: Improved age_to_seconds() for parsing additional possible datetime format. +61/-44
  • r14318: Added option for set snmp noincrease option (-Cc) in snmpdump script. +27/-18
  • r14316: Improved in-memory snmp caching functions, removed global cache variable. Added unit tests for cached functions. +429/-130
  • r14313: Improve handling of PVST across VLAN and STP modules. Implement context-aware caching of per-port/vlan PVST data in device attribs during discovery which is used and augmented with fresh port forwarding state during poller to maintain single logic location. +406/-13
  • r14312: Improve STP and VLAN system interaction. Show STP state on VLAN matrix. +245/-25
  • r14303: Add support for statically defined status entries. +85/-0
  • r14301: EIGRP poller, db schema and UI rewrite. +1,229/-220
  • r14291: Improve storage and memory pool discovery to have more flexible definition format. fix database schema to add object to unique constraint. Simplify filename generation code. +101/-41
  • r14277: Remove ols STP-related fields from VLAN discovery module and db tables. Switch device VLAN page to using STP-specific tables for this data. +65/-42
  • r14275: Improve global and per-device poller performance pages with chart.js charts, and move discovery time data to db table. +634/-49
  • r14266: Do not preload left panel on pages while wide screen not requested. +53/-27
  • r14237: Improved display users list and queries for API tokens. +44/-58
  • r14231: Improve SQL schema update script to handle multi-line queries. +75/-14
  • r14227: Improve probes web ui: improve tooltip output. improve metrics presentation and expose per-probe metric graphs where metrics are captured from probes. +120/-10
  • r14224: Improve API authentication by adding tokens. +529/-7
  • r14222: Implement dashboard AJAX actions. +241/-38
  • r14220: Dashboard management improvements. +298/-84
  • r14211: Improved PoE sensors port association for Extreme ERS by BAY-STACK-PETH-EXT-MIB (OBS-5089). +133/-104
  • r14202: Add some additional SNMP helpers to assist with table walks. +124/-0
  • r14200: More VLAN improvements. Topology map initial commit. +618/-93
  • r14196: Improve VLAN pages some more. Improve status box function to handle 3 elements. +49/-15
  • r14195: Improve the VLAN pages. +210/-90
  • r14192: Improve VLANs interface. +1,035/-163
  • r14184: Improve EIGRP poller module slightly +29/-6
πŸ› Bug Fixes:
  • r14460: Correctly escaping notification transport tags array for json request formats. +58/-7
  • r14458: Fixed escaping notification transport tags for json request formats. +8/-8
  • r14442: Alert/group association rules - cross-entity fields with functions now use correct entity attributes and foreign keys +31/-21
  • r14410: Weathermap permissions - allow level 5+ to view maps, level 7+ to edit +13/-3
  • r14402: Add some validation to billing-data-sorted-json.php +9/-2
  • r14400: Auto-delete orphaned entity permissions from roles/user pages +52/-0
  • r14398: Send all data to opsgenie, excluding graphs +1/-3
  • r14396: Fix erroneous variable causing phantom device header on graphs page. +2/-0
  • r14391: Don't remove erroneous %TAGS% from strings in order to preserve %xx in URLs +11/-7
  • r14389: Fix ENLOGIC-PDU2-MIB sensor precision decision logic +1/-1
  • r14385: Fix some BFD eventlog generation, then disable it all pending eventlog rewrite. +12/-8
  • r14383: Fix WHERE statement in networkmap.php +5/-0
  • r14362: STP polling - prevent PVST VLAN 1 / CIST instance duplication
    • Fix duplicate topology entries when PVST VLAN 1 and CIST coexist
    • Use port_id from vendor data when available to improve port matching
    • Remove unused variable in instance stats loop
    • Whitespace cleanup across STP web UI and polling modules
    +298/-229
  • r14346: Fixed merge arrays in snmp_cache_table() (OBS-5110). Added unit test for case. +47/-2
  • r14338: Prevent possible blank β€˜alert_checks’ page by optimizing β€˜alert_table’ query (OBS-5104). +30/-24
  • r14337: Fixed display application graphs (OBS-5105). +2/-2
  • r14321: Fix count() to safe_count() in storage. +1/-1
  • r14320: count() to safe_count() in processors definition discovery +1/-1
  • r14319: Fix some count() instances with safe_count(). +3/-3
  • r14310: Fix STP system instance database updating and port cache pruning. +36/-3
  • r14309: Fix update script comment messing up parsing. +1/-1
  • r14307: Fix floating battery state to 'ok' +2/-2
  • r14292: Commit missing functions for mempool/storage improvement +72/-0
  • r14287: Fix ignore until ok on alert_table widgets. +7/-2
  • r14281: Conditional joining of device table when sorting on hostname in generate_alert_table(). +12/-4
  • r14278: Clean up the per-module+device discovery time chart +6/-6
  • r14271: Disable recent global events on bottom bar for performance reasons +7/-4
  • r14267: Output modal html at the end of footer. +5/-0
  • r14251: Remove erroneous character +1/-1
  • r14230: Small fixes to old weathermap code. +1/-8
  • r14229: Restore generate_graph_summary_row(). Accidentally removed during generate_graph_row() refactoring. +102/-0
  • r14221: Fix update file to single line SQL only! +6/-22
  • r14217: Fixed mib definitions for storage discovery by CISCO-UNIFIED-COMPUTING-STORAGE-MIB (appear in r14207). +78/-77
  • r14216: Remove some PHP7.4-specific features for now +11/-9
πŸ”§ Minor Changes:
  • r14454: Improved generate_device_form_values() to return entries sorted by default. Improved opt-groups sorting in generate_element_select(). +33/-39
  • r14453: Cleaned array sort functions. Added phpdoc and comments. Added unit tests. Added array_sort_by_order() helper. +653/-45
  • r14441: Improved support for AKCP SPX+. Added discovery some new sensors by SPAGENT-MIB. +336/-66
  • r14425: Added basic os support for Ubiquiti UniFi Cloud Gateway (OBS-5127). +19/-0
  • r14422: Added basic os support for Nokia ISAM platform (OBS-5134). +207/-4
  • r14420: Billing list UI enhancements - added Customer ID/Reference columns, state indicator, notes tooltip +29/-27
  • r14416: Add poller partition filter to devices list - replaces sysContact field when distributed polling enabled +28/-8
  • r14415: Add poller-based permissions - allow granting access to all devices on a poller partition +174/-0
  • r14413: Added safe_explode() safe variant of explode() for prevent possible fatal errors. Fixed fatal error in PowerDNS unix agent module (OBS-4753). +138/-100
  • r14411: Added simple disk speed test script. +103/-0
  • r14407: Port speed override from parsed ifAlias for usage percentage calculations +60/-0
  • r14405: Remove sorting links from table header field labels inside widgets. +22/-4
  • r14394: Added ability to set mysql connect timeout. Skipped db connection error when versions info requested (in cli -VV). +8/-3
  • r14392: Add a basic clock dashboard widget +415/-30
  • r14388: Improve FDB source scoring. +84/-19
  • r14386: Improve BGP discovery eventlog messages a little to include ASNs on change counts. +40/-2
  • r14378: Add ability to search syslog by location string to print_syslog_table(). Add location multiselect to /syslog/ page. +43/-1
  • r14360: Improve nicecase() to retain some initialisms as upper case. +21/-4
  • r14353: Added support for CyberPower ePDU2 (OBS-5117). Improved discovery Outlet sensors by CPS-MIB. +237/-116
  • r14349: Added support for Avtech RoomAlert 32S (OBS-5116). +75/-24
  • r14348: Added discovery IPSec statuses by SFOS-FIREWALL-MIB (OBS-4980). +47/-12
  • r14347: Added detect Unraid linux distro and version. +48/-2
  • r14345: HAcky fix to re-enable wifi_clients and wifi_ap_count graphs on Cisco WLC XE devices +48/-0
  • r14341: Added discovery processors by CHECKPOINT-MIB (OBS-5106). +29/-11
  • r14336: Expand 'device type' navbar menu. +53/-8
  • r14335: Improve BGP table header to use newer generation format. +118/-11
  • r14334: Move BGP/OSPF header bar to a function. Slightly improve BGP peer table layout (merge peer as/type columns to allow peer AS description to be wider!) +156/-153
  • r14332: Improved in-memory user permissions caching. Removed global $permissions variable. +213/-176
  • r14331: Improved in-memory html resources caching. Removed global $cache_html variable. +63/-52
  • r14330: Cleaned in-memory cache functions. Allowed cache key calls by reference. +200/-170
  • r14306: Add status state/event tooltip showing all possible states. +104/-35
  • r14300: Add 8-entry status panel layout (messy, needs refactoring to add more layouts) +72/-23
  • r14299: Added detect measured processor label for sensors by LM-SENSORS-MIB. +48/-2
  • r14295: Add navbar status counts to port and device groups. Also improve some cache-data code and add a config option to disable the port status queries (they're not free!) +481/-12
  • r14294: State definitions for pseudowires changed to a common format. +71/-75
  • r14285: Add some checking and debugging to rrd pipe open and rrd pipe usage. +48/-38
  • r14280: Added discovery outlet sensors by PANDUIT-MIB (OBS-5099). +119/-27
  • r14276: Add sorting to generate_alert_table() +67/-43
  • r14260: Improve some of the generic_* graph type includes +132/-11
  • r14254: Added discovery power and battery sensors by NAG-MIB. +99/-13
  • r14240: Added discovery PSU sensors by F5-PLATFORM-STATS-MIB (OBS-5095). +159/-0
  • r14235: Expose method of discovering and polling sensors via custom includes. +42/-2
  • r14234: Include probe message in alerts. +21/-0
  • r14215: Add ifDuplex to port query builder and add to global port page filters. +20/-1
  • r14214: Remove use of print_graph_row_port() +20/-15
  • r14212: Improve generate_graph_rows() ability to handle different column widths and graph size calculation. +83/-188
  • r14197: Fix Proxmox OS detection for newer releases +2/-2
🎨 UI Changes:
  • r14293: Fix alert styling in dark mode.
  • r14241: Remove old oicon- classes and migrate remaining references to sprite- fix hamburger icons. +19/-19
  • r14199: Merge tagsinput css into less system to enable colour schemes +1/-1
  • r14198: Make some CSS theme colours available in the DOM for JS
  • r14191: Cleanups to matrix css +919/-32
  • r14189: CSS changes and cleanups to various things.
πŸ“‹ MIB Updates:
  • r14433: Updated Aten mib files.
  • r14421: Added Alcatel/Nokia mibs for ISAM platform.
  • r14342: Updated Check Point mib file.
  • r14317: Updated Extreme mib files.
  • r14279: Updated Panduit mib files.
  • r14255: Update Arista MIBs
  • r14253: Updated SNR mib files.
  • r14245: More mib files.
  • r14244: Updated some mib files.
  • r14239: Updated f5 mib files.
  • r14218: Updated stormshield and calix mib files.
  • r14208: Cleanup some mib loading errors.
  • r14205: Updated cambium and aricent mib files. Removed duplicated files.
  • r14203: Updated schleifenbauer mib file.
  • r14185: Added Schleifenbauer and Agent++ mib files.
πŸ—„οΈ Database Changes:
  • r14308: Fix table and column creation for STP +2/-0
  • r14282: Column collations were changed from UTF-8 to Latin1 where it wasn’t actually necessary. +14/-0
  • r14257: Add custom to sensor source ENUM +1/-0
  • r14232: Change api_tokens table creation query to remove reference/constraints as we can't guarantee our credentials have those permissions. +21/-2
  • r14223: API Token schema changes +4/-0
  • r14193: Add VLAN/MAC lookup index +1/-0
🐘 PHP 8 Fixes:
  • r14459: Cleaned some deprecations for php 8.5. +21/-13
  • r14432: Removed deprecated in php 8.5 non-canonical cast names. +101/-102
  • r14329: Prevent fatal error when array_merge90 with not exist variable. +5/-0
  • r14322: Fix count() to safe_count() in vlan q-bridge-mib module. +1/-1
πŸ“ Trivial Changes:
  • r14468: Prevent pass incorrect rrdcached config entry. Renamed constant for detect Remote RRDCacheD. +28/-20
  • r14457: Improved discovery temperature sensor descriptions by CPQHLTH-MIB. +47/-22
  • r14456: Skipped process_notifications() when passed empty notification or device ids. +9/-14
  • r14452: Fixed fatal php error in closing rrd pipes when run poller with no rrd argument (-r). +7/-12
  • r14451: Fixed device query field in poller by hostname (appear in r14427). +2/-2
  • r14448: Improved and cleaned include-dir and include-dir-mib. Added optional arguments to get_recursive_directory_iterator() for skip hidden files and regex filter (defaults not changed). +60/-53
  • r14447: Improved discovery performance error message for devices on old remote pollers. +32/-24
  • r14446: Improved get_poller() for simple parse remote observium version/revision/train. +17/-13
  • r14445: Fixed initialise definition variable for simple definition-based notification handler. +3/-3
  • r14444: Do not pass empty PeerRemoteAddrType to snmpwalk command in bgp peers discovery by HUAWEI-BGP-VPN-MIB. +1/-1
  • r14439: Unified polling ifDuplex port field by RAPID-CITY and OMNITRON-MIB. +46/-5
  • r14438: Integer zero always quoted in db_quote_string() for prevent incorrect query results in varchar fields. +65/-26
  • r14437: Fixed safe_empty() for float zero. +4/-2
  • r14436: Fixed processing zero and float values in is_intnum() and format_number_short(). +15/-5
  • r14435: Fixed Ports search form for wide screen. +133/-136
  • r14427: Improved generate where query in base discovery and poller scripts. Improved error messages when device not poller or discovered. +73/-52
  • r14423: Added configurable option for delete RRDs when deleting device(s) via API. +12/-2
  • r14417: Prepend Default poller in form field for devices list. +3/-1
  • r14414: Use safe variant of functions calls for actions explode/json/base64 in string_transform(). +26/-11
  • r14412: Fixed FDB port association via Q-BRIDGE-MIB for hardware that reports dot1qTpFdbPort incorrectly. +12/-3
  • r14409: Fixed possible fatal php error in poll billing, when device or port entity is removed (OBS-5133). +26/-21
  • r14408: Use shared unit_string_to_numeric() in port_speed_parse(). +16/-35
  • r14406: Fixed display http request errors. Fixed generate fallback url and request when defined. +84/-61
  • r14399: Skipped replace tags when target value is array (except string with single tag) in array_tag_replace(). Added unit tests and debug for this case. +33/-13
  • r14390: Attempt to fix the WHERE clause in the network map after changes to the main SQL query (introduced in r14365). +11/-10
  • r14376: Fixed get_pid_info() for BSD system. +124/-116
  • r14375: Fixed get system timezone in BSD based system. +1/-1
  • r14367: Shorten device-navbar config entry. +1/-1
  • r14365: Code cleanup - automated improvements across codebase
    • Remove unused loop variables in discovery, weathermap, and web UI
    • Replace sizeof() with count() for PHP 8+ compatibility
    • Simplify compound assignments (e.g., $a = $a + 1 to $a += 1)
    • CSS/JS regeneration and minor updates
    • Whitespace cleanup
    +1,810/-1,600
  • r14363: Code cleanup - remove unused loop variables and whitespace
    • Remove unused loop index variables across polling modules
    • Remove CISCO-BFD-MIB definition (moved to BFD system)
    • Whitespace cleanup across polling and definition files
    +383/-59
  • r14361: Remove unused variables, add void return type and whitespace cleanup. +28/-26
  • r14359: Whitespace removal +3/-3
  • r14354: Fixed temperature/humidity sensors scale by ROOMALERT32S-MIB. +4/-4
  • r14352: Do not attempt to run non-existent discovery modules. +12/-5
  • r14351: Forced use snmpget for sensors discovery by ROOMALERT32S-MIB (OBS-5116). +2/-0
  • r14343: Correctly skip HOST-RESOURCES-MIB when CHECKPOINT-MIB processors exist. +6/-3
  • r14340: Fixed svg os icon display when vendor name contains spaces. +6/-3
  • r14328: Improved polling version and hardware for Opengear hardware. +5/-1
  • r14327: Reduced usage of global cache variable in common functions. +83/-69
  • r14326: Improved common db functions dbSize() and get_db_version(). +21/-22
  • r14325: Added function get_mempool_rrd(). +69/-42
  • r14324: Return exit code 1 if process(es) fails to start due to critical errors. +6/-4
  • r14323: Prevented force discovery bgp-peers for unspecified peer ip type (0.0.0.0, ::). +8/-3
  • r14311: Fixed device panel display on wide-screen graphs page. +8/-6
  • r14304: Improved detect CloudFlare IPv6 address from headers in get_remote_addr(). +26/-14
  • r14298: Add requesttoken to a few ajax requests.
  • r14297: Allow httponly via config variable. +4/-3
  • r14296: Web UI option to disable ports status badges on navbar. +8/-0
  • r14290: Some fixes to alert_table() filtering and sort handling. Remove confusing 'syslog' default from device/alerts/ and remove messy all default from /alerts/ +69/-27
  • r14288: Fixed include probes modal helper functions. +4/-2
  • r14286: Fixed create rrd pipes when rrd_dir not exist and not required with remote rrdcached. +24/-12
  • r14284: Added display error message when rrd pipes not created in poller. Prevent fatal php error for this case. +19/-11
  • r14274: Added display if php running in FastCGI mode on About page. +5/-1
  • r14273: Removed set not required config variable in get_mac_vendor() & get_mac_vendors_bulk(). +7/-12
  • r14272: Improved display storage is full message on logon page. +6/-4
  • r14270: Added error message on graphs page when temporary dir is full. +7/-0
  • r14269: Improved display graph error for empty (broken) graph files created. +13/-9
  • r14265: Prevent possible fatal error when colour function not exist in generate_palette(). +6/-2
  • r14263: Clean version string by UPS-MIB. +4/-0
  • r14243: Remove attic. We've never gone back to any of it.
  • r14242: Fixed access to custom sensor polling files (apper in r14236). +8/-7
  • r14238: Fixed detect temperature scale for F5OS with firmware 1.8+ by F5-PLATFORM-STATS-MIB. +15/-6
  • r14236: Expand custom sensor includes to also use <object>.inc.php +8/-3
  • r14233: Fixed logic for get autodiscovery device by private ip addresses. +2/-2
  • r14213: Remove old, unused prototype snmptrap handler. +0/-47
  • r14210: Improved detect IP address in neighbours discovery by LLDP-V2-MIB. +12/-1
  • r14206: Changed mib dir for ARICENT-CFA-MIB. Mib really unused. +1/-1
  • r14204: Improved os definition for SNR eNOS. +11/-6
  • r14201: Define a constant to identify Observium includes being present. +2/-0
  • r14183: Improved detect some old Socomec UPS (OBS-5079). +14/-5
πŸ“š Library Updates:
  • r14465: Removed external lib Ramsey\Uuid as not required anymore. Added simple generate_uuid4(). +37/-29
  • r14464: Fixed loading Phpfastcache lib by autoloader (appear in r14463). +71/-42
  • r14463: Removed compatibility phpFastCache lib for php 7.2. +75/-76
  • r14289: Updated php-cli-tools to 0.12.6.
🧹 Code Cleanup:
  • r14467: Removed unused functions in poller-wrapper. Moved import to correct place. DB charset utf8 to utf8mb4. +2/-29
  • r14462: Removed compatibility code for php 7.2. Removed version check for python 2.x. +32/-89
  • r14461: Removed unused file-based notification transports (already migrated to definitions). +5/-5
  • r14449: Moved notification transport definitions loading to the proper file for correct statistics and wrapper skipping. Removed unnecessary definitions variable hacks. +68/-113
  • r14395: Removed ternary return for html_highlight(). +16/-8
  • r14379: Removed charge sensor class definition. Charge counter definition already exist. +1/-2
  • r14369: Added svn ignore for phpunit cache.
  • r14350: Updated name for Room Alert 32S. +1/-1
  • r14333: Removed print devel information, it do not appears during normal usage. +0/-5
  • r14315: Removed functions from common include (related with previous commit). +0/-102
  • r14305: Moved web cache include to html dir includes. Cleaned some sessions cache functions. +664/-672
  • r14302: Replace some snmp_get() calls with snmp_get_oid() in old os polling includes. +40/-148
  • r14283: Removed modify query with not exist column (not required change). +0/-1
  • r14261: Cleaned update sql comments processing code. +40/-14
🚧 Development:
  • r14450: Correctly removed translate colour special chars in debug messages for array_tag_replace(). +10/-10
  • r14443: Removed translate colour special chars in debug messages for array_tag_replace(). +10/-10
  • r14368: Added common bootstrap and configuration for phpunit tests. Fixed multiple Unit tests. Moved tests with external accesses to snmp or http to prefix Data.php for exclude from main test suite. +2,002/-2,034
  • r14355: Moved constant to proper place. Fixed some phpunit tests. +2/-3
  • r14268: Undebug incorrect dbQuery() error. +1/-1
πŸ“ˆ 41,502 added πŸ“‰ 14,873 removed πŸ“Š 26,629 net change