opennetadmin / ona

OpenNetAdmin IP Address Management (IPAM) system
opennetadmin.com
GNU General Public License v2.0
136 stars 35 forks source link

PHP7.2 - "Uncaught Error: Cannot use string offset as an array" - Patch #129

Closed daviddpd closed 5 years ago

daviddpd commented 6 years ago

When running php 7.2 (on FreeBSD 11.1) - $modwsmenu is defined as a null string ... and php in 7.x will no longer allow this to be upgrade/converted to an array later.

PHP Fatal error:  Uncaught Error: Cannot use string offset as an array in /usr/local/www/ona/www/workspace_plugins/builtin/dhcp_pools/main.inc.php:14
Stack trace:
#0 /usr/local/www/ona/www/include/functions_gui.inc.php(169): require()
#1 /usr/local/www/ona/www/winc/display_subnet.inc.php(85): workspace_plugin_loader('dhcp_pools', Array, Array)
#2 /usr/local/www/ona/www/include/xajax_webwin/webwin.inc.php(181): ws_display('display_subnet', Array)
#3 /usr/local/www/ona/www/include/xajax_0.2.4/xajax.inc.php(997): window_submit('display_subnet', 'subnet_id=>36', 'ws_display')
#4 /usr/local/www/ona/www/include/xajax_0.2.4/xajax.inc.php(656): xajax->_callFunction('window_submit', Array)
#5 /usr/local/www/ona/www/include/xajax_setup.inc.php(66): xajax->processRequests()
#6 /usr/local/www/ona/www/index.php(48): require_once('/usr/local/www/...')
#7 {main}
  thrown in /usr/local/www/ona/www/workspace_plugins/builtin/dhcp_pools/main.inc.php on line 14, referer: https://ona.corp.ixsystems.com/

Initializing $modwsmenu as an array resolves the issue.

diff --git a/www/include/functions_gui.inc.php b/www/include/functions_gui.inc.php
index cd4f416..4c5cd63 100644
--- a/www/include/functions_gui.inc.php
+++ b/www/include/functions_gui.inc.php
@@ -141,7 +141,7 @@ function workspace_plugin_loader($modulename, $record=array(), $extravars=array(
     global $conf, $self, $base, $images, $color, $style, $onadb;
     $modhtml = '';
     $modjs = '';
-    $modwsmenu = '';
+    $modwsmenu = array();
     $modbodyhtml = '';
     $ws_plugin_dir = "{$base}/workspace_plugins";