[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

/yahrzeit/bin/ -> yahrltrs (source)

   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  .


Generated: Mon Jul 9 18:01:44 2012 Cross-referenced by PHPXref 0.7