From 72ed4b0b640d8896f479b36c119cf61f3e7c7925 Mon Sep 17 00:00:00 2001 From: short <> Date: Sat, 8 Sep 2001 01:09:09 +0000 Subject: [PATCH] Contents appendixes implemented "name_full" implemented for month_a() (uses new "sequential" column) --- common.php | 43 ++++++++++++++++++++++++++++++++----------- config.php | 2 ++ obsah.php | 10 ++++++---- obsah_init.pl | 40 +++++++++++++++++++++++++++++++--------- 4 files changed, 71 insertions(+), 24 deletions(-) diff --git a/common.php b/common.php index 327304b..1d4c8c7 100644 --- a/common.php +++ b/common.php @@ -108,19 +108,40 @@ function db_item($query) return($row[0]); } -function month_a($year,$month,$month_last=0) +function num2greg($num) { - global $tb_obsah; + $r=""; + $vals=array(1=>"I",5=>"V",10=>"X",50=>"L",100=>"C",500=>"D",1000=>"M"); + krsort($vals,SORT_NUMERIC); + foreach($vals as $val=>$sym) { + while ($num<0 && $num+$val<-$num) { + $r=substr($r,0,-1).$sym.substr($r,-1,1); + $num+=$val; + } + while (10*$num>=8*$val+(substr($val,0,1)=="1")) { + $r=$r.$sym; + $num-=$val; + } + } + return($r); +} + +function month_a($year,$month,$month_last=0,$sequential=0) +{ + global $tb_obsah,$obsah_year_base; - if (!$month_last) - $month_last=db_item("select month_last from $tb_obsah where year='$year' and month='$month'"); + if (!$month_last || !$sequential) + list($month_last,$sequential)=db_row("select month_last,sequential from $tb_obsah where year='$year' and month='$month'"); $month_full=sprintf("%02d".($month==$month_last ? "" : "-%02d"),$month,$month_last); $r=array("year"=>$year,"month"=>$month,"month_last"=>$month_last,"month_full"=>$month_full, - "name"=>"$month".($month==$month_last ? "" : "-$month_last")."/$year", + "name"=>"$month" .($month==$month_last ? "" : "-$month_last")."/$year", "img" =>"img/eap-$year-${month_full}.jpeg", "icon"=>"img/eap-$year-${month_full}s.jpeg", ); + $r["name_full"]=$r["name"] + ." ($sequential".($month==$month_last ? "" : "-".($sequential+$month_last-$month)).")" + ." - ".num2greg($year-$obsah_year_base+1).". roèník"; return($r); } @@ -161,7 +182,7 @@ function title_name($year,$month) { if (isset($year) && isset($month)) { $month_a=month_a($year,$month); - return("Èíslo ".$month_a["name"]); + return("Èíslo ".$month_a["name_full"]); } else if (isset($year)) return("Roèník $year"); @@ -181,11 +202,11 @@ function title_month($year,$month) ); } -function title_icons_table_month($year,$month,$month_last) +function title_icons_table_month($year,$month,$month_last,$sequential) { - $month_a=month_a($year,$month,$month_last); + $month_a=month_a($year,$month,$month_last,$sequential); print("" - .img($month_a["icon"],"titulní stránka ".$month_a["name"])."
" + .img($month_a["icon"],"titulní stránka ".$month_a["name_full"])."
" ."obsah ".$month_a["name"]."" ); } @@ -200,7 +221,7 @@ function title_icons($year,$month) .(isset($year) ? "" : "") ."\n"); - $result=db_query("select year,month,month_last from $tb_obsah" + $result=db_query("select year,month,month_last,sequential from $tb_obsah" .(isset($year) || isset($month) ? " where" : "") .(isset($year ) ? " year=$year" : "") .(isset($year) && isset($month) ? " and" : "") @@ -246,7 +267,7 @@ function title_icons($year,$month) print(""); - title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1); + title_icons_table_month($year,$row["month"]+1,$row["month_last"]+1,$row["sequential"]); print("\n"); $month=$row["month_last"]; } diff --git a/config.php b/config.php index 5d46ac6..1bed492 100644 --- a/config.php +++ b/config.php @@ -17,6 +17,8 @@ $tb_obsah="energie_obsah"; $sep_obsah_contents=chr(1); $page_obsah_contents=chr(3); + $appendix_obsah_contents=chr(4); + $obsah_year_base=1996; $tb_objednavka="energie_objednavka"; ?> diff --git a/obsah.php b/obsah.php index 922cd36..669795d 100644 --- a/obsah.php +++ b/obsah.php @@ -15,7 +15,7 @@ $title_tail="Obsahy èísel roku $year"; else { $month_a=month_a($year,$month); - $title_tail="Obsah èísla ".$month_a["name"]; + $title_tail="Obsah èísla ".$month_a["name_full"]; } $head_css=" @@ -34,15 +34,17 @@ while ($row=mysql_fetch_array($result)) { if (!$month) { $month_a=month_a($row["year"],$row["month"],$row["month_last"]); - print("

Èíslo ".$month_a["name"]."

\n"); + print("

Èíslo ".$month_a["name_full"]."

\n"); } $contents=htmlspecialchars($sep_obsah_contents.$row["contents"]); $contents=ereg_replace("http://[^[:space:]$page_obsah_contents$sep_obsah_contents]+", "\\0",$contents); - $contents=ereg_replace("$page_obsah_contents([^$sep_obsah_contents]+)", + $contents=ereg_replace("$page_obsah_contents([^$sep_obsah_contents$appendix_obsah_contents]+)", "
strana ... \\1
",$contents); $contents=ereg_replace("\n","
\n\t\t",$contents); - $contents=ereg_replace("$sep_obsah_contents([^$sep_obsah_contents]*)","\t
  • \\1
  • \n",$contents); + $contents=ereg_replace("$sep_obsah_contents([^$sep_obsah_contents$appendix_obsah_contents]*)","\t
  • \\1
  • \n",$contents); + if (1Pøílohy:\n"; print("\n"); } mysql_free_result($result); diff --git a/obsah_init.pl b/obsah_init.pl index 89d40a7..917e2da 100755 --- a/obsah_init.pl +++ b/obsah_init.pl @@ -35,13 +35,14 @@ eval { &db_do("drop table $tb_obsah") }; ."year year(4) not null," ."month tinyint not null," ."month_last tinyint not null," + ."sequential smallint not null," ."contents text not null" .")"); &db_do("alter table $tb_obsah add unique (year,month)"); -use vars qw/$insert_tb_obsah $year $month $month_last $contents/; +use vars qw/$insert_tb_obsah $year $month $month_last $sequential $contents $first/; sub where { @@ -58,35 +59,56 @@ sub flush_month else { tr/ \t\n/ \n/s; s/([\001\n]) | ([\002\n])/$1$2/g; - s/\nstrana \.\.\. ([\d ,]+\002)/\003$1/g; - die "Page marker not found somewhere in this month".&where() if (/\001[^\003]*\002/); + die "Page marker not found somewhere in this month".&where() if (/^[^\004]*\001[^\003\004]*\002/); + die "Duplicate page markers in this month".&where() if (/strana /); tr/\002//d; $_=substr($_,1); } - $insert_tb_obsah->execute($year,$month,$month_last,$_) or die "SQL insert failure: $!"; + $insert_tb_obsah->execute($year,$month,$month_last,$sequential,$_) or die "SQL insert failure: $!"; undef $year,$month; undef $contents; + undef $first; } -$insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,contents) values (?,?,?,?)") +$insert_tb_obsah=$db->prepare("insert into $tb_obsah (year,month,month_last,sequential,contents) values (?,?,?,?,?)") or die "Prepare fail: $!"; while (<>) { chomp; - if (m#^EaP (\d+)(-(\d+))?/(\d+)$#) { + if (m#^EaP (\d+)(-(\d+))?/(\d+) \((\d+)(-\d+)?\)$#) { &flush_month(); $month=$1; $month_last=($3 ? $3 : $1); $year =$4; + $sequential=$5; $contents=""; next; } - if (/^\.\s(.*)$/) { - $contents.="\001$1\002"; + if (/^Pøíloha:$/) { + die "Multiple \"Pøíloha\"s".&where() if ($contents=~/\004/); + $contents.="\004"; + next; + } + if (/^[^[:space:]]/ || (/^\s/ && $contents=~/\004/)) { + $contents.="\001$_\002"; + $first=$_; + next; + } + if (/^\s+strana \.\.\. ([\d ,-]+)$/) { + die "Page number without start".&where() if ("\002"!=substr($contents,-1,1)); + die "Page number already specified".&where() if ($contents=~/\003[^\001\002\004]*\002$/); + $contents=substr($contents,0,-1)."\003$1\002"; next; } if (/^\s(.*)$/) { - $contents=substr($contents,0,-1)."\n$1\002"; + my( $s )=$1; + die "INTERNAL: continuation for \"Pøíloha\"".&where() if ($contents=~/\004/); + die "Continuation contents without start".&where() if ("\002"!=substr($contents,-1,1)); + if ($contents=~/\003[^\001\002\004]*\002$/) { + die "First line not found".&where() if !defined($first); + $contents.="\001$first\002"; + } + $contents=substr($contents,0,-1)."\n$s\002"; next; } die "Unexpected text".&where().": $_" if (/\S/); -- 1.8.3.1