Merge branch 'master' of git://repo.or.cz/bibliodb
[bibliodb.git] / bibliografie.php
bloba4e61c80b60d14fc667d796352b8af196cb2ca55
1 <?php
2 require_once("view/CiteView.php");
3 require_once("profiller.php");
4 Profiller::speed("Zaèínáme");
5 require_once("CiteConfig.php");
6 require_once("CiteOutput.php");
7 //
8 require_once("CiteFields.php");
9 require_once("CiteData.php");
10 require_once("database.php");
11 require_once("model/Models.php");
12 require_once("model/DataCache.php");
13 require_once("model/CiteModel.php");
14 require_once("view/Template.php");
15 require_once("view/HtmlTemplate.php");
16 require_once("view/LatexTemplate.php");
17 Profiller::speed("Naètení vkládaných souborù");
19 class isoRecord{
20 var $header;
21 var $directory=array();
22 var $records=array();
23 var $convertTable=array(
24 "450"=>"keywords_cs",
25 "460"=>"keywords_en",
26 "010"=>"author",
27 "100"=>"title",
28 "030"=>"owner",
29 "200"=>"source",
30 "220"=>"year",
31 "440"=>"annotation",
32 "240"=>"pages",
33 "210"=>"volume",
34 "230"=>"number",
35 "250"=>"vybaveni",
36 "470"=>"kody_ministerstva",
37 "780"=>"kody_obsahu",
38 "790"=>"kody_vyu¾ití"
40 public $data=array();
41 function isoRecord($recordString){
42 $this->records=explode('#',$recordString);
43 $metadata=$this->cleanNumbers($this->records[0]);
44 $this->header=substr($metadata,0,24);
45 $this->directory=str_split(substr($metadata,25),12);
46 $i=1;
47 foreach($this->directory as $s){
48 $tag=strlen($s)>3 ? substr($s,0,3) : $s;
49 $tag=$this->convertField($tag);
50 if(array_key_exists($tag,$this->data))$this->data[$tag][]=$this->cleanNumbers($this->records[$i]);
51 else $this->data[$tag]=array($this->cleanNumbers($this->records[$i]));
52 $i++;
55 function convertField($s){
56 $s=strlen($s)>3 ? substr($s,0,3) : $s;
57 if(array_key_exists($s,$this->convertTable)) return $this->convertTable[$s];
58 else
59 return $s;
61 function getField($tag){
62 return $this->data[$tag];
64 function pretyPrint(){
65 echo "<tr><td>Tisknu</td><td>{$this->header}</td></tr>\n";
66 //echo "<tr><td>".count($this->directory)."</td><td>".count($this->records)."</td></tr>\n";
67 for($i=0;$i<count($this->directory);$i++){
68 $field=$this->convertField($this->directory[$i]);
69 echo "<tr><td>".$field."</td><td>".$this->cleanNumbers($this->records[$i+1])."</td></tr>\n";
73 function cleanNumbers($s){
74 return iconv("CP852","UTF-8",str_replace(array("\n","\r",'
75 '),'',$s));
79 class Bibliography{
80 private $iso_file_name="";
81 private $record_delimiter="##";
82 private $records=array();
83 public function __construct($file_name){
84 $this->iso_file_name=$file_name;
86 public function recordDelimiter($delimiter){
87 $this->record_delimiter=$delimiter;
88 return $this;
90 function loadRecords($count,$start=0){
91 $iso=file_get_contents($this->iso_file_name);
92 $records=explode($this->record_delimiter,$iso);
93 $record="";
94 for($i=$start;$i<$count;$i++){
95 $r=new isoRecord($records[$i]);
96 $this->records[]=$r->data;
99 return $this;
102 public function printBibliography(){
103 foreach($this->records as $record){
104 echo implode("; ",$record["title"])."<br />";
105 //print_r($record->data);
107 echo count($this->records);
111 $bib=new Bibliography("../EKO07.ISO");
112 $bib->recordDelimiter("##")
113 ->loadRecords(20)
114 ->printBibliography()