Also look in the next-highest directory when detecting VCS; add SVN
[interchange.git] / code / UI_Tag / run_profile.coretag
1 # Copyright 2002-2009 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 UserTag run-profile Order   check cgi profile name
9 UserTag run-profile addAttr
10 UserTag run-profile Version 1.7
11 UserTag run-profile Routine <<EOR
12 sub {
13         my ($check, $cgi, $profile, $name, $opt) = @_;
14 #::logDebug("call check $check");
15         my $ref;
16         my $pname = $name;
17
18         if ($opt->{ref}) {
19                 if (ref($opt->{ref}) eq 'HASH') {
20                         $ref = $opt->{ref};
21                 }
22                 else {
23                         # error message
24                         ::logError("Invalid ref parameter provided for profile %s", $pname || $check);
25                 }
26         }
27         elsif ($cgi) {
28                 $ref = \%CGI::values;
29         }
30         else {
31                 $ref = $::Values;
32         }
33
34         unless ($pname) {
35             # check scratch for profile if none specified
36             $profile = $Scratch->{"profile_$check"} unless $profile;
37
38     #::logDebug("PROFILE(" . $Tag->var('MV_PAGE',1) . "):***$profile***");
39             # test passes if no profile exists
40             return 1 if ! $profile;
41
42             $opt->{no_error} = 1 unless defined $opt->{no_error};
43
44             $pname = 'tmp_profile.' . $Vend::Session->{id};
45     #Debug("running check $check, pname=$pname profile=$profile");
46             $profile .= "\n&fatal=1\n";
47             $profile = "&noerror=1\n$profile" if $opt->{no_error};
48             $profile = "&overwrite=1\n$profile" if $opt->{overwrite_error};
49             $::Scratch->{$pname} = $profile;
50         }
51
52         my ($status) = ::check_order($pname, $ref);
53
54         delete $::Scratch->{$pname} unless $name;
55
56         return is_yes($opt->{hide}) ? undef : $status;
57 }
58 EOR