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