Skip to content

SCCP Manager 17.0.1.1: firmware Load Image select, installer docs#102

Open
timspb wants to merge 81 commits into
chan-sccp:developfrom
timspb:pr-17.0.1.1
Open

SCCP Manager 17.0.1.1: firmware Load Image select, installer docs#102
timspb wants to merge 81 commits into
chan-sccp:developfrom
timspb:pr-17.0.1.1

Conversation

@timspb

@timspb timspb commented Feb 13, 2026

Copy link
Copy Markdown

Summary

  • Load Image (SCCP models): in the model edit modal, the Load Image field is now a dropdown populated from masterFilesStructure.xml:
    • options are built from .loads files for the selected model;
    • if the current DB value is not in XML, it is added to the list so existing configs are preserved.
  • Installation / deployment docs:
    • README.md: added Deployment (what install does) section;
    • documents what the installer does step‑by‑step: chan-sccp check, config/DB backup, schema update, sccpdeviceconfig / sccplineconfig VIEWs, realtime/extconfig wiring, driver hook, TFTP detection and masterFilesStructure.xml download/fallback.
  • Repo hygiene:
    • .gitignore: added *.code-workspace, .idea/, .phpunit.result.cache;
    • added RELEASE_v17.0.1.1.md with release notes draft.

Versioning

  • module.xml bumped to 17.0.1.1 with a new changelog entry.
  • sccpManagerUpdater.json:
    • version set to 17.0.1.1;
    • location points to the v17.0.1.1 archive in timspb/sccp_manager.

PR details

  • Base: chan-sccp/sccp_manager:develop
  • Compare: timspb/sccp_manager:pr-17.0.1.1

timspb and others added 30 commits February 12, 2026 20:23
…odule.xml deps

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ninstall PDO, updater and docs

Co-authored-by: Cursor <cursoragent@cursor.com>
- dbinterface: integer columns (profileid, keepalive, dns, buttons, enabled)
  for sccpdevice/sccpdevmodel; use PDO::quote() and 0 for empty ints
- aminterface: declare useAmiInterface; check send() !== false before
  getResult()/getMessage() in all AMI callers; init \ in
  getRealTimeStatus(); isset(RevisionNum) in get_compatible_sccp
- bmoFunctions: add getCSS() and getJS() for FreePBX Asset Manager
- views: isset(\['tech_hardware']) in form.buttons.php and
  form.adddevice.php

Co-authored-by: Cursor <cursoragent@cursor.com>
…ging

- Security/XSS: escapeHtml() in Sccp_manager; formcreate::h() for all
  form value/name/option output; views (form.*, server.*, page.html)
  escape DB and request data
- CSRF: document in bmoFunctions that forms use fpbx-submit and
  AJAX uses BMO session auth
- i18n: wrap hardcoded strings in _() in views and formcreate
- PHP 8.2: catch Throwable in Sccp_manager __construct, set
  class_error and freepbx_log for Dashboard debugging
- module.xml and sccpManagerUpdater.json: version 17.0.1.0,
  changelog; updater location v17.0.1.0.tar.gz
- Add DEPLOYMENT_SUMMARY.md

Co-authored-by: Cursor <cursoragent@cursor.com>
…nstall

Co-authored-by: Cursor <cursoragent@cursor.com>
…al fork URLs

Co-authored-by: Cursor <cursoragent@cursor.com>
- Response: eventlistendevent set to SCCPShowSoftkeySetsComplete (driver sends lowercase k)
- aminterface: map SCCPShowSoftkeySetsComplete to SCCPShowSoftKeySetsComplete_Event class
- Add Technical.notes/chan-sccp-requirements.md and chan-sccp-verification-report.md

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…d add missing properties

Co-authored-by: Cursor <cursoragent@cursor.com>
Add class_exists check before accessing FreePBX::Log() to prevent installer crashes when BMO Log class is not yet available. Falls back to standard error_log() during installation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace deprecated FILTER_SANITIZE_STRING with manual sanitization using preg_replace to maintain compatibility with PHP 8.1+ while preserving functionality.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add missing _completed property declaration in Event abstract class to prevent PHP 8.2 deprecation warnings about dynamic property creation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add missing property declarations: eventListIsCompleted and eventListEndEvent in Response abstract class to prevent all dynamic property creation warnings.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add null-coalescing operators (??) for all sccpvalues array accesses to prevent 'Undefined array key' errors during installation when configuration values are not yet set.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace null with 'now' in DateTime constructor calls to prevent PHP 8.2 deprecation warnings about passing null to string parameter.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add missing sccpvalues property declaration in extconfigs class - Add null-coalescing operators for all settingsFromDb array accesses - Fix undefined array key issues in form.buttons.php - Comprehensive fix for all remaining PHP 8.2 compatibility issues

Co-authored-by: Cursor <cursoragent@cursor.com>
Add null-coalescing operators for all strtoupper() calls to prevent 'Passing null to parameter of type string' errors during database schema modifications.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add missing properties to anonymous class in install.php (xml_data, sccpvalues) - Add #[AllowDynamicProperties] attribute to Sccp_manager class as fallback - All dynamic property creation warnings should now be resolved - Comprehensive audit completed for PHP 8.2 compatibility

Co-authored-by: Cursor <cursoragent@cursor.com>
Add null-coalescing operator for tftp_path access on line 316 to prevent undefined array key error during TFTP server checking.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace invalid '{ ?? default}' syntax with proper '( ?? default) . string' concatenation on line 316 in helperFunctions.php

Co-authored-by: Cursor <cursoragent@cursor.com>
Change 'TYPE' to 'type' in SQL queries to match database schema case sensitivity in dbinterface.class.php lines 115 and 119

Co-authored-by: Cursor <cursoragent@cursor.com>
Add null coalescing operators to prevent 'Undefined array key' errors when accessing sccp_defaults array elements that may not exist in database (like 'debug')

Co-authored-by: Cursor <cursoragent@cursor.com>
Add null coalescing operators to prevent 'Undefined array key' errors when accessing: - sysConfiguration arrays from AMI interface - TZdata offset values - hint_context default values - sccpvalues systemdefault values

Co-authored-by: Cursor <cursoragent@cursor.com>
- Wrap all database operations in try-catch blocks to prevent crashes - Add proper error logging for database failures - Ensure all fetch results return arrays for PHP 8.2 compatibility - Cast database values to proper types - Return empty arrays on database errors instead of crashing

Co-authored-by: Cursor <cursoragent@cursor.com>
COMPREHENSIVE FIXES: - Fixed string concatenation in showGroup to check key existence - Added null coalescing operators to all array accesses - Fixed SQL 'Unknown column type' error with fallback to base table - Added database view existence checks - Protected all , ,  array accesses - Fixed button configuration array handling - Ensured all database parameters use null coalescing - Added proper type casting for PHP 8.2 compatibility

Co-authored-by: Cursor <cursoragent@cursor.com>
FORMCREATE.CLASS.PHP FIXES: - Fixed 'net' array key error by initializing opt_at arrays - Added proper array initialization in foreach xpath loops - Fixed res_value, addrArr, installedLangs array accesses - Protected all input field and option processing - Added null coalescing to all form element handling SCCP_MANAGER.CLASS.PHP FINAL CLEANUP: - Fixed all remaining  array accesses - Protected get_settings button array processing - Fixed amp_conf global array accesses - Added null coalescing to all remaining array operations - Protected dev_config, raw_settings, dir_info arrays This should eliminate ALL 'Undefined array key' errors in PHP 8.2

Co-authored-by: Cursor <cursoragent@cursor.com>
timspb and others added 28 commits February 13, 2026 23:56
Co-authored-by: Cursor <cursoragent@cursor.com>
…DME link to guides

Co-authored-by: Cursor <cursoragent@cursor.com>
…time), ajaxHelper (request, res), form.adddevice (sccpvalues, REQUEST), Response (getKey), helperFunctions (sccpvalues), advserver.keyset (sname)

Co-authored-by: Cursor <cursoragent@cursor.com>
…all.php widen VARCHAR(1) to VARCHAR(11)

Co-authored-by: Cursor <cursoragent@cursor.com>
…ntcode/label

Co-authored-by: Cursor <cursoragent@cursor.com>
…nversion

Co-authored-by: Cursor <cursoragent@cursor.com>
…nd server.info

Co-authored-by: Cursor <cursoragent@cursor.com>
…tings, ASTETCDIR)

Co-authored-by: Cursor <cursoragent@cursor.com>
… sprintf/die_freepbx, mysqldump order

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- Dial plan: single help panel (Dial Plan Help), save button redirect after save
- Device form: Type field label/help clarified; empty model dropdown fallback; G-model selection fix
- CP-8821: add device template conf/SEP0000000000.cnf.xml_8821_template and install entry
- Install: trigger creation fix (DROP then CREATE, use query not exec); Foreign key violation
  handled in dbinterface + ajaxHelper with user-friendly message when line missing in SCCP Lines
- Device warning block: Bootstrap alert layout, icons, Russian translations for firmware/template
- Russian locale: hints translated, terminology kept in English; codec/TFTP help; spelling fixes
- Minor: spelling (existance→existence, requered→required, etc.), DisplayTypeFormatter
- .gitignore: add *.tar.gz, *.zip

Co-authored-by: Cursor <cursoragent@cursor.com>
- Remove 8821 from install.php devModelArr and delete SEP0000000000.cnf.xml_8821_template
- dbinterface: no fallback to all models when ciscophones/sipphones empty
- formcreate: no 'No models loaded' placeholder; no G-model matching for Type select
- sccpgeneral: Type label/help simplified (Type, short help only)

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…f_bd_section

Co-authored-by: Cursor <cursoragent@cursor.com>
…e config)

Co-authored-by: Cursor <cursoragent@cursor.com>
…rap colors)

Co-authored-by: Cursor <cursoragent@cursor.com>
…styles, sccp-warning-banner class

Co-authored-by: Cursor <cursoragent@cursor.com>
…p panel styles, sccp-warning-banner class"

This reverts commit d00f558.
…a), init arrays

Co-authored-by: Cursor <cursoragent@cursor.com>
…hardware labels

Co-authored-by: Cursor <cursoragent@cursor.com>
… MySQL table labels (terms unchanged)

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…tive

Co-authored-by: Cursor <cursoragent@cursor.com>
…r CSS for tr+td

Co-authored-by: Cursor <cursoragent@cursor.com>
@TheEndBoss101

Copy link
Copy Markdown

I’m experiencing an issue where SCCP Extension Settings are not saved.
It may be related to the changes in this PR.

I’ve opened a detailed issue here: timspb#1

@TheEndBoss101

Copy link
Copy Markdown

Resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants