Annotation of wpscripts/ztransfer/fetch.pm, Revision 1.1.1.1
1.1 yason 1: #!/usr/bin/perl
2: # $Id: fetch.pm,v 1.1.1.7 2006/12/06 14:45:25 init Exp $
3: package fetch;
4: use db;
5: use log; # bad! only for log::filelist()
6: use warnings;
7: my $EXPAND_SYMLINKS = 1;
8: my $QUERY_Z = "SELECT ID,Path,file_priority FROM upload_files WHERE Status=0 AND type_file=0";
9: my $QUERY_J = "SELECT ID,Path,file_priority FROM upload_files WHERE Status=0 AND type_file=1";
10: my $QUERY_P = "SELECT ID,Path,file_priority FROM upload_files WHERE Status=0 AND type_file=2";
11: my $QUERY_T = "SELECT ID,Path,file_priority FROM upload_files WHERE Status=0 AND type_file=3";
12:
13: my $sth;
14:
15: my @stack_ids; # stack for ID's
16: my @stack_paths;# stack for Path's
17: my $tos = 0; # top of stack
18:
19:
20: sub stack_push($$)
21: {
22: $stack_ids[$tos] = shift;
23: $stack_paths[$tos] = shift;
24: $tos++;
25: }
26:
27:
28: sub zayavki_list()
29: {
30: my @dbids;
31: my @dbpaths;
32: my @dbpri;
33: my $i = 0;
34:
35: $sth = $db::dbh->prepare($QUERY_Z);
36: $sth->execute( );
37: while( ($dbids[$i], $dbpaths[$i], $dbpri[$i]) = $sth->fetchrow_array( ) )
38: {
39: if($dbids[$i]) # element exists (THIS CODE SHOULD BE FIXED)
40: {
41: #convert samba-paths to local unix paths
42: $dbpaths[$i] = substr($dbpaths[$i], 23); # remove \\fileserver\wideprint\
43: $dbpaths[$i] =~ tr/\\/\//; # convert each \ to /
44: $dbpaths[$i] = '/WIDEPRINT/' . $dbpaths[$i];
45: $dbpaths[$i] = substr($dbpaths[$i], 0, ( index($dbpaths[$i], ' ', 0) ) );
46: #
47: # We must not save non-existent local file in array!
48: # Returning of array with bad element is deprecated,
49: # So this code too weak to work correctly.
50: #
51: if($EXPAND_SYMLINKS && -e $dbpaths[$i])
52: {
53: chomp( $_ = `dirname $dbpaths[$i] | xargs /usr/bin/readlink` );
54: chomp( $dbpaths[$i] = $_ . '/' . `basename $dbpaths[$i]` );
55:
56: # increment $i ONLY if local file exists, otherwise replace element in next iteration
57: $i++;
58: }
59: # if localfile does not exists, write result of next iteration on its place
60: }
61: else
62: {
63: next;
64: }
65: }
66:
67: # strip last row in arrays by decrementing $i counter
68: # SHOULD BE FIXED!
69: $i--;
70: $#dbids = $i;
71: $#dbpaths = $i;
72:
73: # reformat listing using file_priority database field
74: for($i = 0;$i < scalar(@dbids); $i++)
75: {
76: stack_push($dbids[$i], $dbpaths[$i]) if($dbpri[$i] == 0);
77: }
78: for($i = 0;$i < scalar(@dbids); $i++)
79: {
80: stack_push($dbids[$i], $dbpaths[$i]) if($dbpri[$i] == 1);
81: }
82: for($i = 0;$i < scalar(@dbids); $i++)
83: {
84: stack_push($dbids[$i], $dbpaths[$i]) if($dbpri[$i] == 2);
85: }
86: @dbids = @stack_ids;
87: @dbpaths = @stack_paths;
88:
89: # make current files list via log::filelist()
90: log::filelist(\@dbpaths);
91:
92: # we return the list of references to @dbids and @dbpaths
93: return( (\@dbids, \@dbpaths) );
94: }
95:
96:
97: sub jpegs_list()
98: {
99: my @dbids;
100: my @dbpaths;
101: my $i = 0;
102:
103: $sth = $db::dbh->prepare($QUERY_J);
104: $sth->execute( );
105: while(($dbids[$i], $dbpaths[$i]) = $sth->fetchrow_array( ) )
106: {
107: $dbpaths[$i] = substr($dbpaths[$i], 23);
108: $dbpaths[$i] =~ tr/\\/\//;
109: $dbpaths[$i] = '/WIDEPRINT/' . $dbpaths[$i];
110: $dbpaths[$i] = substr($dbpaths[$i], 0, ( index($dbpaths[$i], ' ', 0) ) );
111: if($EXPAND_SYMLINKS && -e $dbpaths[$i])
112: {
113: chomp( $_ = `dirname $dbpaths[$i] | xargs /usr/bin/readlink` );
114: chomp( $dbpaths[$i] = $_ . '/' . `basename $dbpaths[$i]` );
115: }
116: $i++;
117: }
118:
119: $i--;
120: $#dbids = $i;
121: $#dbpaths = $i;
122:
123: log::filelist(\@dbpaths);
124:
125: return( (\@dbids, \@dbpaths) );
126: }
127:
128:
129: sub probas_list()
130: {
131: my @dbids;
132: my @dbpaths;
133: my $i = 0;
134:
135: $sth = $db::dbh->prepare($QUERY_P);
136: $sth->execute( );
137: while(($dbids[$i], $dbpaths[$i]) = $sth->fetchrow_array( ) )
138: {
139: $dbpaths[$i] = substr($dbpaths[$i], 23);
140: $dbpaths[$i] =~ tr/\\/\//;
141: $dbpaths[$i] = '/WIDEPRINT/' . $dbpaths[$i];
142: $dbpaths[$i] = substr($dbpaths[$i], 0, ( index($dbpaths[$i], ' ', 0) ) );
143: if($EXPAND_SYMLINKS && -e $dbpaths[$i])
144: {
145: chomp( $_ = `dirname $dbpaths[$i] | xargs /usr/bin/readlink` );
146: chomp( $dbpaths[$i] = $_ . '/' . `basename $dbpaths[$i]` );
147: }
148: $i++;
149: }
150:
151: $i--;
152: $#dbids = $i;
153: $#dbpaths = $i;
154:
155: log::filelist(\@dbpaths);
156:
157:
158: return( (\@dbids, \@dbpaths) );
159: }
160:
161:
162: sub tpps_list()
163: {
164: my @dbids;
165: my @dbpaths;
166: my $i = 0;
167:
168: $sth = $db::dbh->prepare($QUERY_T);
169: $sth->execute( );
170: while(($dbids[$i], $dbpaths[$i]) = $sth->fetchrow_array( ) )
171: {
172: $dbpaths[$i] = substr($dbpaths[$i], 23);
173: $dbpaths[$i] =~ tr/\\/\//;
174: $dbpaths[$i] = '/WIDEPRINT/' . $dbpaths[$i];
175: $dbpaths[$i] = substr($dbpaths[$i], 0, ( index($dbpaths[$i], ' ', 0) ) );
176: if($EXPAND_SYMLINKS && -e $dbpaths[$i])
177: {
178: chomp( $_ = `dirname $dbpaths[$i] | xargs /usr/bin/readlink` );
179: chomp( $dbpaths[$i] = $_ . '/' . `basename $dbpaths[$i]` );
180: }
181: $i++;
182: }
183:
184: $i--;
185: $#dbids = $i;
186: $#dbpaths = $i;
187:
188: log::filelist(\@dbpaths);
189:
190: return( (\@dbids, \@dbpaths) );
191: }
192:
193:
194: return(1);
CVSweb