| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
1 #!/usr/local/bin/perl 2 3 # 4 # Produce Yahrzeit Letters 5 # 6 7 open (STDIN,"/dev/null"); 8 #$dbg++; 9 10 $BASE="/disk1/data/yi-drupal/yahrzeit"; 11 $BIN=$BASE."/bin"; 12 $OUTDIR="/var/tmp"; 13 system("rm $OUTDIR/yi_*.ps"); 14 15 $month = shift (@ARGV); 16 $month =~ s/[+]/ /; 17 18 if ($dbg) { 19 open (STDERR,">/tmp/yahrdbg.log"); 20 print STDERR "yahrltrs: $month\n"; 21 } 22 23 open (RPTOUT, ">$OUTDIR/summary"); 24 # 25 # Connect to database 26 # 27 $driver = "mysql"; 28 $dsn = "DBI:$driver:database=yidata;host=localhost;port=3306"; 29 #$dsn = "DBI:$driver:database=yidata;host=192.168.64.3;port=3306"; 30 31 if (!defined($dbh = DBI->connect($dsn, "yiadmin", "yipass"))) { 32 print "Failed to connect to database"; 33 exit 1; 34 } 35 36 $drh = DBI->install_driver("mysql"); 37 push(@INC,$BASE); 38 require "getopts.pl"; 39 require "fmtsub"; 40 use DBI; 41 $seq="aa01"; 42 43 @hebrew_months= ("Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishri", 44 "Heshvan","Kislev","Teveth","Shevat","Adar I","Adar II"); 45 foreach (@hebrew_months) { 46 push (@hmos,"\L$_"); 47 } 48 49 50 foreach (@hmos) { 51 $mo++; 52 if ("\L$month" eq substr($_,0,length($month))) { 53 $heb_month=$hebrew_months[$mo-1]; 54 $mno=$mo; 55 last; 56 } 57 } 58 unless ($mno) { 59 print "Bad parameter : $month\n"; 60 exit; 61 } 62 63 $sth = $dbh->prepare( $sql = 'SELECT y_notify_name, y_rel, y_rel_name, ' 64 . 'y_dt_dy, y_dt_mo, y_dt_yr , ' 65 . 'addr_street, addr_city, addr_prov, addr_postcd ' 66 . "FROM identity as i, yz WHERE y_dt_mo like \'$month%\' and " 67 . 'yz.serial=i.serial order by y_dt_mo, y_dt_dy '); 68 69 if ($dbg) { print STDERR $sql,"\n"; } 70 $sth->execute; 71 72 @flds = split(" ","membername relation relationname y_dt_dy y_dt_mo y_dt_yr addr_street addr_city addr_prov addr_postcd"); 73 74 while (my $ref = $sth->fetchrow_arrayref) { 75 @data=(); 76 $i =0; 77 print STDERR "\n-----------\n" if $dbg1; 78 for $fld(@flds) { 79 $key{$fld} = $$ref[$i++]; 80 print STDERR "$fld : $key{$fld}\n" if $dbg1; 81 } 82 83 $postcd = substr($key{addr_postcd},0,3)." ".substr($key{addr_postcd},3); 84 $key{memberaddr}=$key{addr_street}."\n".$key{addr_city}.", ". 85 $key{addr_prov}."\n".$postcd."\n"; 86 $key{yahrhebdate}= $key{y_dt_dy}." ".$key{y_dt_mo}; 87 88 if (defined(y_dt_yr)) { 89 $key{yahrhebdate}.= " ".$key{y_dt_yr}; 90 } 91 delete($key{y_dt_dy}); 92 delete($key{y_dt_mo}); 93 delete($key{y_dt_yr}); 94 delete($key{addr_street}); 95 delete($key{addr_city}); 96 delete($key{addr_prov}); 97 delete($key{addr_postcd}); 98 99 $yy=0; 100 ($yd,$ym)=split(/[ \t]+/,$key{"yahrhebdate"},2); 101 if($ym =~ /\s*(\d+)$/) { $yy =$1; } 102 $ym =~ s/\s*(\d+)$//; 103 104 $tmo=$mo=0; 105 foreach (@hmos) { 106 $mo++; 107 if ("\L$ym" eq substr($_,0,length($ym))) { 108 $tmo=$mo; 109 last; 110 } 111 } 112 113 if ($tmo) { 114 if ($dbg) {print STDERR $key{membername}, ": $tmo \n"}; 115 if (! $yy && ( ($tmo == 12 && $ym eq "Adar") #ambiguous ADAR 116 || (($tmo == 8 || $tmo == 9) && ($yd == 30)))) { 117 print "Ambiguous date: $yd $ym for $key{membername}\n"; 118 } else { 119 $yy = $yy ? $yy : "5759"; # default to non leap year 120 if ( $tmo == $mno || ($tmo == 13 && $mno ==12) ) { 121 @result=`cd $BIN; $BIN/test.cl "( $tmo $yd $yy )" 2>> /tmp/test.err`; 122 ($engdate,$shab,$date2,$shab2) = @result; 123 if (0) { # send some debug output to browser 124 print "test.cl \"( $tmo $yd $yy )\"<br>"; 125 foreach $fl(@result) {print $fl,"<br>"} 126 } 127 if ($dbg) { 128 print STDERR "( $tmo $yd $yy )","\n"; 129 print STDERR join("",@result),"\n"; 130 } 131 132 chop($engdate); 133 $engdate=~ s/(.*,.*),.*/$1/; 134 print STDERR "date2: $engdate\n"; 135 chop($shab); 136 $key{var0}=0; 137 if ($date2) { 138 chop($date2); 139 chop($shab2); 140 print STDERR "date2: $date2\n"; 141 142 $date2=~ s/,.*//; 143 $key{"yahrdate2"}=makeprintable($date2); 144 $key{var0}=1; 145 $key{yahrshab2}= " and ".$shab2; 146 } 147 $key{yahrengdate}=makeprintable($engdate); 148 $key{yahrshab}= $shab; 149 $t=$key{relation}; 150 $key{relation}= "\L$t"; 151 $relationname = $key{relationname}; 152 $relation = $key{relation}; 153 $relation = "\u$relation"; 154 $membername = $key{membername}; 155 $hebd = $key{yahrhebdate}; 156 $hebd =~ s/ \d.*$//; 157 ( $engd = $engdate ) =~ s/(...)[^ ]+ (...)[^ ]+ (.*)/$1, $2. $3/; 158 $key{var1}=1; 159 if ($shab =~ /NIL/) { 160 $shab = "Yom Tov"; 161 $key{yahrshab}= $shab; 162 $key{var1}=0; 163 if ( $tmo == 7 ) { 164 $key{note1} = "At your request a `kail male rachamim' prayer may be recited on the shabbos before Yom Kippur."; } 165 elsif ( $tmo == 1 ) { 166 $key{note1} = "At your request a `kail male rachamim' prayer may be recited on the shabbos before the start of the month of Nissan." ; } 167 } 168 $shab =~ s/Shabbos //; 169 $shab =~ s/Parashas //; 170 # print "form_letter(\"$OUTDIR/yi_yl_\".$seq++,\"-mm\")<br>"; 171 form_letter("$OUTDIR/yi_yl_".$seq++,"-mm"); 172 form_letter("$OUTDIR/yi_env_".$seq++,"-L","-ttempl.env"); 173 write(RPTOUT); 174 if($key{var0}) { 175 $relationname= $relation= $membername= $hebd= $engd= $shab =""; 176 $shab=$shab2; 177 ( $engd = $date2 ) =~ s/(...)[^ ]+ (...)[^ ]+ (.*)/$1, $2. $3/; 178 $shab =~ s/Shabbos //; 179 $shab =~ s/Parashas //; 180 write(RPTOUT); 181 } 182 } 183 %key=(); %relation=(); @mydata=(); 184 } 185 } else { 186 print STDERR "Unrecognized month $ym for $key{membername}\n"; 187 } 188 $have_data=0; 189 @mydata = (); 190 } 191 192 $sth->finish; 193 sub makeprintable { 194 my $date=shift; 195 print STDERR "Date: $date\n"; 196 ($date=~m/(\d+)/); 197 my $day=$1; 198 $spec = "st" if ($day == 1); 199 $spec = "nd" if ($day == 2); 200 $spec = "rd" if ($day == 3); 201 $spec = "th" if ($day > 3); 202 return ($date.$spec); 203 } 204 sub form_letter { 205 my $file=shift; 206 my $macro=shift; 207 my $param = shift; 208 209 @data=(); 210 while (($key,$data) = each %key) { 211 push(@data,":$key: $data\n"); 212 } 213 @tmpl=@tmpl1; 214 open (OUT,">$file.dat") || die "opening $file.dat"; 215 print OUT @data; 216 close OUT; 217 218 # print "system(\"cd $BIN/..; $BIN/fmt $param -o $file.t $file.dat\")<br>"; 219 system("cd $BIN/..; /archive/misc/yi/yahrzeit/bin/fmt $param -o $file.t $file.dat"); 220 221 system("$BIN/psprt $macro $file.t"); 222 unlink ("$file.t"); 223 unlink ("$file.dat"); 224 system ("mv $file.t.ps $file.ps"); 225 } 226 227 #print "End processing month #$mno $month<P>\n"; 228 print "<PRE>\n"; 229 close (RPTOUT); open (RPTOUT, "$OUTDIR/summary"); 230 while (<RPTOUT>){ 231 print; 232 } 233 print"</PRE>\n"; 234 close(STDOUT); 235 exit; 236 237 238 format RPTOUT_TOP = 239 240 @<<<<<<<<<<<<<<<<<<<<<<<<<<<< Yahrzeits for @<<<<<<<<<<<<< 241 `date +'%B %e, %Y'`,$heb_month 242 243 Name Relation Person observing Dates Shabbos 244 ================================================================================================================ 245 . 246 247 format RPTOUT = 248 @<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<@<<<<<<<<<<< @<<<<<<<<<<<<<< 249 $relationname, $relation, $membername, $hebd, $engd,$shab 250 .
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |