/**
  * Test for PMA_getHtmlForColumnAttribute
  *
  * @return void
  */
 public function testGetHtmlForColumnAttribute()
 {
     $cmeta = array('Null' => 'YES', 'Extra' => 'on update CURRENT_TIMESTAMP', 'Field' => 'f');
     $colspec = array('attribute' => 'attr');
     $analyzed_sql = array(array('create_table_fields' => array('f' => array('default_current_timestamp' => true))));
     $types = $this->getMockBuilder('PMA_Types')->disableOriginalConstructor()->setMethods(array('getAttributes'))->getMock();
     $types->expects($this->once())->method('getAttributes')->will($this->returnValue(array('on update CURRENT_TIMESTAMP')));
     $GLOBALS['PMA_Types'] = $types;
     $result = PMA_getHtmlForColumnAttribute(2, 3, 1, $colspec, $cmeta, true, $analyzed_sql);
     $this->assertContains('<select style="width: 7em;" name="field_attribute[2]" ' . 'id="field_2_2">', $result);
     $this->assertContains('<option value="on update CURRENT_TIMESTAMP">', $result);
 }
/**
 * Function to get html for column attributes
 *
 * @param int        $columnNumber                     column number
 * @param array      $columnMeta                       column meta
 * @param string     $type_upper                       type upper
 * @param int        $length_values_input_size         length values input size
 * @param int        $length                           length
 * @param string     $default_current_timestamp        default current time stamp
 * @param array|null $extracted_columnspec             extracted column spec
 * @param string     $submit_attribute                 submit attribute
 * @param array|null $analyzed_sql                     analyzed sql
 * @param string     $submit_default_current_timestamp submit default current
 *                                                     timestamp
 * @param array      $comments_map                     comments map
 * @param array|null $fields_meta                      fields map
 * @param bool       $is_backup                        is backup
 * @param array      $move_columns                     move columns
 * @param array      $cfgRelation                      configuration relation
 * @param array      $available_mime                   available mime
 * @param array      $mime_map                         mime map
 *
 * @return array
 */
function PMA_getHtmlForColumnAttributes($columnNumber, $columnMeta, $type_upper, $length_values_input_size, $length, $default_current_timestamp, $extracted_columnspec, $submit_attribute, $analyzed_sql, $submit_default_current_timestamp, $comments_map, $fields_meta, $is_backup, $move_columns, $cfgRelation, $available_mime, $mime_map)
{
    // Cell index: If certain fields get left out, the counter shouldn't change.
    $ci = 0;
    // Every time a cell shall be left out the STRG-jumping feature, $ci_offset
    // has to be incremented ($ci_offset++)
    $ci_offset = -1;
    $content_cell = array();
    // column name
    $content_cell[$ci] = PMA_getHtmlForColumnName($columnNumber, $ci, $ci_offset, isset($columnMeta) ? $columnMeta : null, $cfgRelation);
    $ci++;
    // column type
    $content_cell[$ci] = PMA_getHtmlForColumnType($columnNumber, $ci, $ci_offset, $type_upper, isset($columnMeta) ? $columnMeta : null);
    $ci++;
    // column length
    $content_cell[$ci] = PMA_getHtmlForColumnLength($columnNumber, $ci, $ci_offset, $length_values_input_size, $length);
    $ci++;
    // column default
    $content_cell[$ci] = PMA_getHtmlForColumnDefault($columnNumber, $ci, $ci_offset, isset($type_upper) ? $type_upper : null, isset($default_current_timestamp) ? $default_current_timestamp : null, isset($columnMeta) ? $columnMeta : null);
    $ci++;
    // column collation
    $content_cell[$ci] = PMA_getHtmlForColumnCollation($columnNumber, $ci, $ci_offset, $columnMeta);
    $ci++;
    // column attribute
    $content_cell[$ci] = PMA_getHtmlForColumnAttribute($columnNumber, $ci, $ci_offset, isset($extracted_columnspec) ? $extracted_columnspec : null, isset($columnMeta) ? $columnMeta : null, isset($submit_attribute) ? $submit_attribute : null, isset($analyzed_sql) ? $analyzed_sql : null, isset($submit_default_current_timestamp) ? $submit_default_current_timestamp : null);
    $ci++;
    // column NULL
    $content_cell[$ci] = PMA_getHtmlForColumnNull($columnNumber, $ci, $ci_offset, isset($columnMeta) ? $columnMeta : null);
    $ci++;
    // column indexes
    // See my other comment about  this 'if'.
    if (!$is_backup) {
        $content_cell[$ci] = PMA_getHtmlForColumnIndexes($columnNumber, $ci, $ci_offset, $columnMeta);
        $ci++;
    }
    // end if ($action ==...)
    // column auto_increment
    $content_cell[$ci] = PMA_getHtmlForColumnAutoIncrement($columnNumber, $ci, $ci_offset, $columnMeta);
    $ci++;
    // column comments
    $content_cell[$ci] = PMA_getHtmlForColumnComment($columnNumber, $ci, $ci_offset, isset($columnMeta) ? $columnMeta : null, $comments_map);
    $ci++;
    // move column
    if (isset($fields_meta)) {
        $content_cell[$ci] = PMA_getHtmlForMoveColumn($columnNumber, $ci, $ci_offset, $move_columns, $columnMeta);
        $ci++;
    }
    if ($cfgRelation['mimework'] && $GLOBALS['cfg']['BrowseMIME'] && $cfgRelation['commwork']) {
        // Column Mime-type
        $content_cell[$ci] = PMA_getHtmlForMimeType($columnNumber, $ci, $ci_offset, $available_mime, $columnMeta, $mime_map);
        $ci++;
        // Column Browser transformation
        $content_cell[$ci] = PMA_getHtmlForTransformation($columnNumber, $ci, $ci_offset, $available_mime, $columnMeta, $mime_map, '');
        $ci++;
        // column Transformation options
        $content_cell[$ci] = PMA_getHtmlForTransformationOption($columnNumber, $ci, $ci_offset, $columnMeta, $mime_map, '');
        $ci++;
        // Column Input transformation
        $content_cell[$ci] = PMA_getHtmlForTransformation($columnNumber, $ci, $ci_offset, $available_mime, $columnMeta, $mime_map, 'input_');
        $ci++;
        // column Input transformation options
        $content_cell[$ci] = PMA_getHtmlForTransformationOption($columnNumber, $ci, $ci_offset, $columnMeta, $mime_map, 'input_');
    }
    return $content_cell;
}
/**
 * build html for adding a new user defined column to central list
 *
 * @param string $db current database
 *
 * @return html of the form to let user add a new user defined column to the list
 */
function PMA_getHTMLforAddNewColumn($db)
{
    $addNewColumn = '<div id="add_col_div"><a href="#">' . '<span>+</span> ' . __('Add new column') . '</a>' . '<form id="add_new" style="min-width:100%;display:none" ' . 'method="post" action="db_central_columns.php">' . PMA_URL_getHiddenInputs($db) . '<input type="hidden" name="add_new_column" value="add_new_column">' . '<table>';
    $addNewColumn .= PMA_getCentralColumnsTableHeader();
    $addNewColumn .= '<tr>' . '<td></td>' . '<td name="col_name" class="nowrap">' . PMA_getHtmlForColumnName(0, 0, 0, array(), array('central_columnswork' => false)) . '</td>' . '<td name = "col_type" class="nowrap">' . PMA_getHtmlForColumnType(0, 1, 0, '', array()) . '</td>' . '<td class="nowrap" name="col_length">' . PMA_getHtmlForColumnLength(0, 2, 0, 8, '') . '</td>' . '<td class="nowrap" name="col_default">' . PMA_getHtmlForColumnDefault(0, 3, 0, '', '', array()) . '</td>' . '<td name="collation" class="nowrap">' . PMA_getHtmlForColumnCollation(0, 4, 0, array()) . '</td>' . '<td class="nowrap" name="col_attribute">' . PMA_getHtmlForColumnAttribute(0, 5, 0, array(), array(), false, null) . '</td>' . '<td class="nowrap" name="col_isNull">' . PMA_getHtmlForColumnNull(0, 6, 0, array()) . '</td>' . '<td class="nowrap" name="col_extra">' . PMA_getHtmlForColumnExtra(0, 7, 0, array()) . '</td>' . ' <td>' . '<input id="add_column_save" type="submit" ' . ' value="Save"/></td>' . '</tr>';
    $addNewColumn .= '</table></form></div>';
    return $addNewColumn;
}