Handle hostnames with upper-case letters
[webmin.git] / mysql / view-lib.pl
1 # Functions used by view_table.cgi and siblings
2
3 # get_search_args(&in)
4 # Returns the search SQL, search URL arguments and search hidden fields
5 sub get_search_args
6 {
7 local %in = %{$_[0]};
8 local ($search, $searchhids, $searchargs, @adv);
9 if ($in{'field'}) {
10         # A simple search
11         $search = "where ".&quotestr($in{'field'})." ".
12                    &make_like($in{'match'}, $in{'for'});
13         $searchargs = "&field=".&urlize($in{'field'}).
14                       "&for=".&urlize($in{'for'}).
15                       "&match=".&urlize($in{'match'});
16         $searchhids = &ui_hidden("field", $in{'field'})."\n".
17                       &ui_hidden("for", $in{'for'})."\n".
18                       &ui_hidden("match", $in{'match'})."\n";
19         }
20 elsif ($in{'advanced'}) {
21         # An advanced search
22         for(my $i=0; defined($in{"field_$i"}); $i++) {
23                 if ($in{"field_$i"}) {
24                         push(@adv, &quotestr($in{"field_$i"})." ".
25                                    &make_like($in{"match_$i"}, $in{"for_$i"}));
26                         $searchargs .= "&field_$i=".&urlize($in{"field_$i"}).
27                                        "&for_$i=".&urlize($in{"for_$i"}).
28                                        "&match_$i=".&urlize($in{"match_$i"});
29                         $searchhids .=
30                                 &ui_hidden("field_$i", $in{"field_$i"})."\n".
31                                 &ui_hidden("for_$i", $in{"for_$i"})."\n".
32                                 &ui_hidden("match_$i", $in{"match_$i"})."\n";
33                         }
34                 }
35         if (@adv) {
36                 $search = "where (".join($in{'and'} ? " and " : " or ",
37                                         @adv).")";
38                 $searchhids .= &ui_hidden("and", $in{'and'})."\n".
39                                &ui_hidden("advanced", 1)."\n";
40                 $searchargs .= "&and=".$in{'and'}.
41                                "&advanced=1";
42                 }
43         }
44 return ($search, $searchhids, $searchargs, scalar(@adv));
45 }
46
47 # get_search_limit(&in)
48 # Build limiting expression
49 sub get_search_limit
50 {
51 local %in = %{$_[0]};
52 $in{'start'} ||= 0;
53 if ($module_name eq "mysql") {
54         return "limit $in{'start'},$displayconfig{'perpage'}";
55         }
56 else {
57         return "limit $displayconfig{'perpage'} offset $in{'start'}";
58         }
59 }
60
61 # get_search_limit(&in)
62 # Returns an SQL expression for sorting, hidden fields for the current sort order, and
63 # URL args for the current order
64 sub get_search_sort
65 {
66 local %in = %{$_[0]};
67 if ($in{'sortfield'}) {
68         local ($sort, $sorthids, $sortargs);
69         $sort = "order by ".&quotestr($in{'sortfield'})." ".($in{'sortdir'} ? "asc" : "desc");
70         $sorthids = &ui_hidden("sortfield", $in{'sortfield'})."\n".
71                     &ui_hidden("sortdir", $in{'sortdir'})."\n";
72         $sortargs = "&sortfield=".&urlize($in{'sortfield'}).
73                     "&sortdir=$in{'sortdir'}";
74         return ($sort, $sorthids, $sortargs);
75         }
76 else {
77         return ( undef, undef, undef );
78         }
79 }
80
81 # make_like(mode, for)
82 sub make_like
83 {
84 local ($match, $for) = @_;
85 local $qu = $module_name eq "mysql" ? '"' : "'";
86 return $match == 0 ? "like $qu%$for%$qu" :
87        $match == 1 ? "like $qu$for$qu" :
88        $match == 2 ? "not like $qu%$for%$qu" :
89        $match == 3 ? "not like $qu$for$qu" :
90        $match == 4 ? "> $for" :
91        $match == 5 ? "< $for" :
92                      " = \"\"";
93 }
94
95 1;
96