columns = $columns; $this->fields = $fields; } /** * Process all fields to add column markup to each one. */ public function process() { $index = 0; $count = count( $this->fields ) - 1; foreach ( $this->fields as &$field ) { if ( empty( $field['column'] ) ) { continue; } $this->process_field( $field ); if ( $count === $index ) { $this->process_last_field( $field ); } if ( isset( $field['fields'] ) ) { $row = new self( $this->columns, $field['fields'] ); $row->process(); $field['fields'] = $row->get_fields(); } $this->current_column = $field['column']; $this->current_field = &$field; $index ++; } } /** * Get all processed fields. * * @return array */ public function get_fields() { return $this->fields; } /** * Process a field in the middle. * * @param array $field Field settings. */ public function process_field( &$field ) { if ( ! $this->is_start_column( $field ) ) { return; } $column = $this->columns[ $field['column'] ]; $before = ''; $after = ''; $after .= ''; if ( $this->is_start_row( $field ) ) { $after .= ''; $before .= '