PMA\libraries\navigation\NavigationTree::_addDbContainers PHP Method

_addDbContainers() private method

References to existing children are returned if this function is called twice on the same node
private _addDbContainers ( NodeDatabase $db, string $type, integer $pos2 ) : array
$db PMA\libraries\navigation\nodes\NodeDatabase The database node, new containers will be attached to this node
$type string The type of item being paginated on the second level of the tree
$pos2 integer The position for the pagination of the branch at the second level of the tree
return array An array of new nodes
    private function _addDbContainers($db, $type, $pos2)
    {
        // Get items to hide
        $hidden = $db->getHiddenItems('group');
        if (!$GLOBALS['cfg']['NavigationTreeShowTables'] && !in_array('tables', $hidden)) {
            $hidden[] = 'tables';
        }
        if (!$GLOBALS['cfg']['NavigationTreeShowViews'] && !in_array('views', $hidden)) {
            $hidden[] = 'views';
        }
        if (!$GLOBALS['cfg']['NavigationTreeShowFunctions'] && !in_array('functions', $hidden)) {
            $hidden[] = 'functions';
        }
        if (!$GLOBALS['cfg']['NavigationTreeShowProcedures'] && !in_array('procedures', $hidden)) {
            $hidden[] = 'procedures';
        }
        if (!$GLOBALS['cfg']['NavigationTreeShowEvents'] && !in_array('events', $hidden)) {
            $hidden[] = 'events';
        }
        $retval = array();
        if ($db->hasChildren(true) == 0) {
            if (!in_array('tables', $hidden) && $db->getPresence('tables')) {
                $retval['tables'] = NodeFactory::getInstance('NodeTableContainer');
            }
            if (!in_array('views', $hidden) && $db->getPresence('views')) {
                $retval['views'] = NodeFactory::getInstance('NodeViewContainer');
            }
            if (!in_array('functions', $hidden) && $db->getPresence('functions')) {
                $retval['functions'] = NodeFactory::getInstance('NodeFunctionContainer');
            }
            if (!in_array('procedures', $hidden) && $db->getPresence('procedures')) {
                $retval['procedures'] = NodeFactory::getInstance('NodeProcedureContainer');
            }
            if (!in_array('events', $hidden) && $db->getPresence('events')) {
                $retval['events'] = NodeFactory::getInstance('NodeEventContainer');
            }
            // Add all new Nodes to the tree
            foreach ($retval as $node) {
                if ($type == $node->real_name) {
                    $node->pos2 = $pos2;
                }
                $db->addChild($node);
            }
        } else {
            foreach ($db->children as $node) {
                if ($type == $node->real_name) {
                    $node->pos2 = $pos2;
                }
                $retval[$node->real_name] = $node;
            }
        }
        return $retval;
    }