[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

/yahrzeit/bin/ -> yahrltrs.bak (source)

   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  .


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