Add payment module for MerchantWare 4.0 gateway, from Merchant
[interchange.git] / code / UI_Tag / db_columns.coretag
1 # Copyright 2002-2007 Interchange Development Group and others
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.  See the LICENSE file for details.
7
8 # $Id: db_columns.coretag,v 1.5 2007-03-30 23:40:54 pajamian Exp $
9
10 UserTag db_columns  Order       name columns joiner passed_order
11 UserTag db_columns  AttrAlias   table name
12 UserTag db_columns  AttrAlias   fields columns
13 UserTag db_columns  Version     $Revision: 1.5 $
14 UserTag db_columns  Routine     <<EOR
15 sub {
16         my ($table,$columns, $joiner, $passed_order) = @_;
17         $table = $Values->{mv_data_table}
18                 unless $table;
19         my $db = Vend::Data::database_exists_ref($table)
20                 or return undef;
21         my $acl = UI::Primitive::get_ui_table_acl($table);
22         $db = $db->ref() unless $Vend::Interpolate::Db{$table};
23         my $key = $db->config('KEY');
24
25         $joiner = "\n" unless defined $joiner;
26
27         my @cols;
28         if(! $columns || $columns =~ /^[\s,\0]*$/) {
29                 @cols = $db->columns();
30         }
31         else {
32                 @cols = grep /\S/, split /[\s,\0]+/, $columns;
33                 my (@allcols) =  $db->columns();
34
35                 my %col;
36                 if($passed_order) {
37                         @col{@allcols} = @allcols;
38                         @allcols = @cols;
39                         my $found;
40                         for(@cols) {
41                                 next unless $_ eq $key;
42                                 $found = 1;
43                                 last;
44                         }
45                         unshift (@allcols, $key) if ! $found;
46                 }
47                 else {
48                         @col{@cols} = @cols;
49                 }
50
51                 $col{$key} = $key if ! defined $col{$key};
52
53                 @cols = grep defined $col{$_}, @cols;
54         }
55
56         if($acl) {
57                 @cols = UI::Primitive::ui_acl_grep( $acl, 'fields', @cols);
58         }
59
60         return @cols if wantarray;
61         return join $joiner, @cols;
62 }
63 EOR