/**
  * Test for PMA_relationsCleanupColumn
  *
  * @return void
  * @group medium
  */
 public function testPMARelationsCleanupColumn()
 {
     $db = "PMA";
     $table = "PMA_bookmark";
     $column = "name";
     $this->redefineRelation();
     //the $cfgRelation value before cleanup column
     $cfgRelation = PMA_checkRelationsParam();
     $this->assertEquals(true, $cfgRelation['commwork']);
     //validate PMA_getDbComments when commwork = true
     $db_comments = PMA_getDbComments();
     $this->assertEquals(array('db_name0' => 'comment0', 'db_name1' => 'comment1'), $db_comments);
     $this->assertEquals(true, $cfgRelation['displaywork']);
     //validate PMA_getDisplayField when displaywork = true
     $display_field = PMA_getDisplayField($db, $table);
     $this->assertEquals('PMA_display_field', $display_field);
     $this->assertEquals(true, $cfgRelation['relwork']);
     $this->assertEquals('column_info', $cfgRelation['column_info']);
     $this->assertEquals('table_info', $cfgRelation['table_info']);
     $this->assertEquals('relation', $cfgRelation['relation']);
     //cleanup
     PMA_relationsCleanupColumn($db, $table, $column);
     //the $cfgRelation value after cleanup column
     $cfgRelation = PMA_checkRelationsParam();
     $is_defined_column_info = isset($cfgRelation['column_info']) ? $cfgRelation['column_info'] : null;
     $is_defined_table_info = isset($cfgRelation['table_info']) ? $cfgRelation['table_info'] : null;
     $is_defined_relation = isset($cfgRelation['relation']) ? $cfgRelation['relation'] : null;
     $this->assertEquals(null, $is_defined_column_info);
     $this->assertEquals(null, $is_defined_table_info);
     $this->assertEquals(null, $is_defined_relation);
 }
    /**
     * returns array with dbs grouped with extended infos
     *
     * @uses    $GLOBALS['PMA_List_Database']
     * @uses    $GLOBALS['cfgRelation']['commwork']
     * @uses    $cfg['ShowTooltip']
     * @uses    $cfg['LeftFrameDBTree']
     * @uses    $cfg['LeftFrameDBSeparator']
     * @uses    $cfg['ShowTooltipAliasDB']
     * @uses    PMA_getTableCount()
     * @uses    PMA_getDbComment()
     * @uses    is_array()
     * @uses    implode()
     * @uses    strstr()
     * @uses    explode()
     * @param   integer $offset
     * @param   integer $count
     * @return  array   db list
     */
    public function getGroupedDetails($offset, $count)
    {
        $dbgroups   = array();
        $parts      = array();

        if ($GLOBALS['cfg']['ShowTooltip']
          && $GLOBALS['cfgRelation']['commwork']) {
            $db_tooltips = PMA_getDbComments();
        }

        if (!$GLOBALS['cfg']['LeftFrameDBTree']) {
            $separators = array();
        } elseif (is_array($GLOBALS['cfg']['LeftFrameDBSeparator'])) {
            $separators = $GLOBALS['cfg']['LeftFrameDBSeparator'];
        } elseif (!empty($GLOBALS['cfg']['LeftFrameDBSeparator'])) {
            $separators = array($GLOBALS['cfg']['LeftFrameDBSeparator']);
        } else {
            $separators = array();
        }

        foreach ($this->getLimitedItems($offset, $count) as $key => $db) {
            // garvin: Get comments from PMA comments table
            $db_tooltip = '';

            if (isset($db_tooltips[$db])) {
                $db_tooltip = $db_tooltips[$db];
            }

            $pos = false;

            foreach($separators as $separator) {
                // use strpos instead of strrpos; it seems more common to
                // have the db name, the separator, then the rest which
                // might contain a separator
                // like dbname_the_rest
                $pos = strpos($db, $separator);

                if ($pos !== false) {
                    break;
                }
            }

            if ($pos !== false) {
                $group          = substr($db, 0, $pos);
                $disp_name_cut  = substr($db, $pos);
            } else {
                $group          = $db;
                $disp_name_cut  = $db;
            }

            $disp_name  = $db;
            if ($db_tooltip && $GLOBALS['cfg']['ShowTooltipAliasDB']) {
                $disp_name      = $db_tooltip;
                $disp_name_cut  = $db_tooltip;
                $db_tooltip     = $db;
            }

            $dbgroups[$group][$db] = array(
                'name'          => $db,
                'disp_name_cut' => $disp_name_cut,
                'disp_name'     => $disp_name,
                'comment'       => $db_tooltip,
            );

            if ($GLOBALS['cfg']['Server']['CountTables']) {
                $dbgroups[$group][$db]['num_tables'] = PMA_getTableCount($db);
            }
        } // end foreach ($GLOBALS['PMA_List_Database']->items as $db)
        return $dbgroups;
    }