PMA\libraries\navigation\nodes\Node::getPresence PHP Method

getPresence() public method

Returns the number of children of type $type present inside this container This method is overridden by the PMA\libraries\navigation\nodes\NodeDatabase and PMA\libraries\navigation\nodes\NodeTable classes
public getPresence ( string $type = '', string $searchClause = '' ) : integer
$type string The type of item we are looking for ('tables', 'views', etc)
$searchClause string A string used to filter the results of the query
return integer
    public function getPresence($type = '', $searchClause = '')
    {
        if (!$GLOBALS['cfg']['NavigationTreeEnableGrouping'] || !$GLOBALS['cfg']['ShowDatabasesNavigationAsTree']) {
            if (isset($GLOBALS['cfg']['Server']['DisableIS']) && !$GLOBALS['cfg']['Server']['DisableIS']) {
                $query = "SELECT COUNT(*) ";
                $query .= "FROM INFORMATION_SCHEMA.SCHEMATA ";
                $query .= $this->_getWhereClause('SCHEMA_NAME', $searchClause);
                $retval = (int) $GLOBALS['dbi']->fetchValue($query);
                return $retval;
            }
            if ($GLOBALS['dbs_to_test'] === false) {
                $query = "SHOW DATABASES ";
                $query .= $this->_getWhereClause('Database', $searchClause);
                $retval = $GLOBALS['dbi']->numRows($GLOBALS['dbi']->tryQuery($query));
                return $retval;
            }
            $retval = 0;
            foreach ($this->_getDatabasesToSearch($searchClause) as $db) {
                $query = "SHOW DATABASES LIKE '" . $db . "'";
                $retval += $GLOBALS['dbi']->numRows($GLOBALS['dbi']->tryQuery($query));
            }
            return $retval;
        }
        $dbSeparator = $GLOBALS['cfg']['NavigationTreeDbSeparator'];
        if (!$GLOBALS['cfg']['Server']['DisableIS']) {
            $query = "SELECT COUNT(*) ";
            $query .= "FROM ( ";
            $query .= "SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, ";
            $query .= "'{$dbSeparator}', 1) ";
            $query .= "DB_first_level ";
            $query .= "FROM INFORMATION_SCHEMA.SCHEMATA ";
            $query .= $this->_getWhereClause('SCHEMA_NAME', $searchClause);
            $query .= ") t ";
            $retval = (int) $GLOBALS['dbi']->fetchValue($query);
            return $retval;
        }
        if ($GLOBALS['dbs_to_test'] !== false) {
            $prefixMap = array();
            foreach ($this->_getDatabasesToSearch($searchClause) as $db) {
                $query = "SHOW DATABASES LIKE '" . $db . "'";
                $handle = $GLOBALS['dbi']->tryQuery($query);
                if ($handle === false) {
                    continue;
                }
                while ($arr = $GLOBALS['dbi']->fetchArray($handle)) {
                    if ($this->_isHideDb($arr[0])) {
                        continue;
                    }
                    $prefix = strstr($arr[0], $dbSeparator, true);
                    if ($prefix === false) {
                        $prefix = $arr[0];
                    }
                    $prefixMap[$prefix] = 1;
                }
            }
            $retval = count($prefixMap);
            return $retval;
        }
        $prefixMap = array();
        $query = "SHOW DATABASES ";
        $query .= $this->_getWhereClause('Database', $searchClause);
        $handle = $GLOBALS['dbi']->tryQuery($query);
        if ($handle !== false) {
            while ($arr = $GLOBALS['dbi']->fetchArray($handle)) {
                $prefix = strstr($arr[0], $dbSeparator, true);
                if ($prefix === false) {
                    $prefix = $arr[0];
                }
                $prefixMap[$prefix] = 1;
            }
        }
        $retval = count($prefixMap);
        return $retval;
    }