From 2a2069fe9efe26db7f7e26b3535e114a297af1cb Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Wed, 12 Oct 2022 14:59:13 -0600 Subject: [PATCH] Use is_array around foreach --- app/access_controls/app_defaults.php | 102 ++++++++++++++------------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/app/access_controls/app_defaults.php b/app/access_controls/app_defaults.php index fff2b1fdaa..1ebfb648c5 100644 --- a/app/access_controls/app_defaults.php +++ b/app/access_controls/app_defaults.php @@ -32,10 +32,12 @@ $database = new database; $num_rows = $database->select($sql, null, 'column'); if ($num_rows == 0) { + //set the directory $xml_dir = $_SESSION["switch"]["conf"]["dir"].'/autoload_configs'; $xml_file = $xml_dir."/acl.conf.xml"; $xml_file_alt = $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/resources/templates/conf/autoload_configs/acl.conf'; + //load the xml and save it into an array if (file_exists($xml_file)) { $xml_string = file_get_contents($xml_file); @@ -62,56 +64,20 @@ $conf_array = json_decode($json, true); //process the array - foreach($conf_array['network-lists']['list'] as $list) { - //get the attributes - $access_control_name = $list['@attributes']['name']; - $access_control_default = $list['@attributes']['default']; + if (is_array($conf_array['network-lists']['list'])) { + foreach($conf_array['network-lists']['list'] as $list) { + //get the attributes + $access_control_name = $list['@attributes']['name']; + $access_control_default = $list['@attributes']['default']; - //insert the name, description - $access_control_uuid = uuid(); - $array['access_controls'][0]['access_control_uuid'] = $access_control_uuid; - $array['access_controls'][0]['access_control_name'] = $access_control_name; - $array['access_controls'][0]['access_control_default'] = $access_control_default; - - $p = new permissions; - $p->add('access_control_add', 'temp'); - - $database = new database; - $database->app_name = 'access_controls'; - $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd'; - $database->save($array, false); - unset($array); - - $p->delete('access_control_add', 'temp'); - - //normalize the array - needed because the array is inconsistent when there is only one row vs multiple - if (strlen($list['node']['@attributes']['type']) > 0) { - $list['node'][]['@attributes'] = $list['node']['@attributes']; - unset($list['node']['@attributes']); - } - - //add the nodes - foreach ($list['node'] as $row) { - //get the name and value pair - $node_type = $row['@attributes']['type']; - $node_cidr = $row['@attributes']['cidr']; - $node_domain = $row['@attributes']['domain']; - $node_description = $row['@attributes']['description']; - //replace $${domain} - if (strlen($node_domain) > 0) { - $node_domain = str_replace("\$\${domain}", $domain_name, $node_domain); - } - //add the profile settings into the database - $access_control_node_uuid = uuid(); - $array['access_control_nodes'][0]['access_control_node_uuid'] = $access_control_node_uuid; - $array['access_control_nodes'][0]['access_control_uuid'] = $access_control_uuid; - $array['access_control_nodes'][0]['node_type'] = $node_type; - $array['access_control_nodes'][0]['node_cidr'] = $node_cidr; - $array['access_control_nodes'][0]['node_domain'] = $node_domain; - $array['access_control_nodes'][0]['node_description'] = $node_description; + //insert the name, description + $access_control_uuid = uuid(); + $array['access_controls'][0]['access_control_uuid'] = $access_control_uuid; + $array['access_controls'][0]['access_control_name'] = $access_control_name; + $array['access_controls'][0]['access_control_default'] = $access_control_default; $p = new permissions; - $p->add('access_control_node_add', 'temp'); + $p->add('access_control_add', 'temp'); $database = new database; $database->app_name = 'access_controls'; @@ -119,7 +85,47 @@ $database->save($array, false); unset($array); - $p->delete('access_control_node_add', 'temp'); + $p->delete('access_control_add', 'temp'); + + //normalize the array - needed because the array is inconsistent when there is only one row vs multiple + if (strlen($list['node']['@attributes']['type']) > 0) { + $list['node'][]['@attributes'] = $list['node']['@attributes']; + unset($list['node']['@attributes']); + } + + //add the nodes + if (is_array($list['node'])) { + foreach ($list['node'] as $row) { + //get the name and value pair + $node_type = $row['@attributes']['type']; + $node_cidr = $row['@attributes']['cidr']; + $node_domain = $row['@attributes']['domain']; + $node_description = $row['@attributes']['description']; + //replace $${domain} + if (strlen($node_domain) > 0) { + $node_domain = str_replace("\$\${domain}", $domain_name, $node_domain); + } + //add the profile settings into the database + $access_control_node_uuid = uuid(); + $array['access_control_nodes'][0]['access_control_node_uuid'] = $access_control_node_uuid; + $array['access_control_nodes'][0]['access_control_uuid'] = $access_control_uuid; + $array['access_control_nodes'][0]['node_type'] = $node_type; + $array['access_control_nodes'][0]['node_cidr'] = $node_cidr; + $array['access_control_nodes'][0]['node_domain'] = $node_domain; + $array['access_control_nodes'][0]['node_description'] = $node_description; + + $p = new permissions; + $p->add('access_control_node_add', 'temp'); + + $database = new database; + $database->app_name = 'access_controls'; + $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd'; + $database->save($array, false); + unset($array); + + $p->delete('access_control_node_add', 'temp'); + } + } } }