/**
 * Function to get html for Internal relations form
 *
 * @param array  $columns            columns
 * @param string $tbl_storage_engine table storage engine
 * @param array  $existrel           db, table, column
 * @param string $db                 current database
 *
 * @return string
 */
function PMA_getHtmlForInternalRelationForm($columns, $tbl_storage_engine, $existrel, $db)
{
    $save_row = array_values($columns);
    $saved_row_cnt = count($save_row);
    $html_output = '<fieldset>' . '<legend>' . __('Internal relations') . '</legend>' . '<table id="internal_relations" class="relationalTable">';
    $html_output .= '<tr><th>' . __('Column') . '</th>';
    $html_output .= '<th>' . __('Internal relation');
    if (PMA_Util::isForeignKeySupported($tbl_storage_engine)) {
        $html_output .= PMA_Util::showHint(__('An internal relation is not necessary when a corresponding' . ' FOREIGN KEY relation exists.'));
    }
    $html_output .= '</th>';
    $odd_row = true;
    for ($i = 0; $i < $saved_row_cnt; $i++) {
        $html_output .= PMA_getHtmlForInternalRelationRow($save_row, $i, $odd_row, $existrel, $db);
        $odd_row = !$odd_row;
    }
    $html_output .= '</table>';
    $html_output .= '</fieldset>';
    return $html_output;
}
 /**
  * Tests for PMA_getHtmlForCommonForm() method.
  *
  * @return void
  * @test
  */
 public function testPMAGetHtmlForCommonForm()
 {
     $db = "pma_db";
     $table = "pma_table";
     $columns = array(array("Field" => "Field1"));
     $cfgRelation = array('displaywork' => true, 'relwork' => true, 'displaywork' => true);
     $tbl_storage_engine = "InnoDB";
     $existrel = array();
     $existrel_foreign = array();
     $options_array = array();
     $save_row = array();
     foreach ($columns as $row) {
         $save_row[] = $row;
     }
     $html = PMA_getHtmlForCommonForm($db, $table, $columns, $cfgRelation, $tbl_storage_engine, $existrel, $existrel_foreign, $options_array);
     //case 1: PMA_getHtmlForInternalRelationForm
     $this->assertContains(PMA_getHtmlForInternalRelationForm($columns, $tbl_storage_engine, $existrel, $db), $html);
     //case 2: PMA_getHtmlForForeignKeyForm
     $this->assertContains(PMA_getHtmlForForeignKeyForm($columns, $existrel_foreign, $db, $tbl_storage_engine, $options_array), $html);
     $this->assertContains(PMA_URL_getHiddenInputs($db, $table), $html);
     $this->assertContains(__('Relations'), $html);
     $this->assertContains(__('Column'), $html);
     $this->assertContains(__('Internal relation'), $html);
     $this->assertContains(__('Choose column to display:'), $html);
     //case 3: PMA_getHtmlForInternalRelationRow
     $row = PMA_getHtmlForInternalRelationRow($save_row, 0, true, $existrel, $db);
     $this->assertContains($row, $html);
     //case 4: PMA_getHtmlForForeignKeyRow
     $row = PMA_getHtmlForForeignKeyRow(array(), true, $columns, 0, $options_array, $tbl_storage_engine, $db);
     $this->assertContains($row, $html);
     //case 5: PMA_getHtmlForDisplayFieldInfos
     $this->assertContains(PMA_getHtmlForDisplayFieldInfos($db, $table, $save_row), $html);
     //case 6: PMA_getHtmlForCommonFormFooter
     $this->assertContains(PMA_getHtmlForCommonFormFooter(), $html);
 }