From fb9df0c269f36703909b8b259abbdbed29881ecd Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 21:56:04 +0200 Subject: use directly MOBIClass --- inc/3rdparty/libraries/MOBIClass/Prc.php | 97 ++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 inc/3rdparty/libraries/MOBIClass/Prc.php (limited to 'inc/3rdparty/libraries/MOBIClass/Prc.php') diff --git a/inc/3rdparty/libraries/MOBIClass/Prc.php b/inc/3rdparty/libraries/MOBIClass/Prc.php new file mode 100644 index 00000000..c40b5805 --- /dev/null +++ b/inc/3rdparty/libraries/MOBIClass/Prc.php @@ -0,0 +1,97 @@ +new FileString(32), + "attributes"=>new FileShort(), + "version"=>new FileShort(), + "creationTime"=>new FileDate(), + "modificationTime"=>new FileDate(), + "backupTime"=>new FileDate(), + "modificationNumber"=>new FileInt(), + "appInfoID"=>new FileInt(), + "sortInfoID"=>new FileInt(), + "prcType"=>new FileString(4), + "creator"=>new FileString(4), + "uniqueIDSeed"=>new FileInt(), + "nextRecordListID"=>new FileInt(), + "numberRecords"=>new FileShort(), + "recordList"=>new FileElement(), + "filler"=>new FileShort(), + "records"=>new FileElement() + )); + + //Set values from the info block + foreach($this->elements as $name => $val){ + if($settings->exists($name)){ + $this->get($name)->set($settings->get($name)); + } + } + + $this->get("numberRecords")->set(sizeof($records)); + + $i = 0; + foreach($records as $record){ + $offset = new FileInt(); + $attr = new FileByte(); + $uniqueID = new FileTri($i); + + $this->elements["recordList"]->add("Rec".$i, new FileElement(array( + "offset"=>$offset, + "attribute"=>$attr, + "uniqueID"=>$uniqueID + ))); + + $this->elements["records"]->add("Rec".$i, $record); + $i++; + } + + $this->updateOffsets($records); + } + + public function getByteLength(){ + throw new Exception("Test"); + } + + public function updateOffsets($records){ + $base = $this->offsetToEntry("records"); + + $i = 0; + + foreach($records as $record){ + $el = $this->elements["recordList"]->get("Rec".$i); + + $local = $this->elements["records"]->offsetToEntry("Rec".$i); + + $el->get("offset")->set($base+$local); + + $i++; + } + } + + public function save($file){ + $handle = fopen($file, "w"); + fwrite($handle, $this->serialize()); + fclose($handle); + } + + public function output(){ + echo $this->serialize(); + } + + public function __toString(){ + $output = "Prc (".$this->getByteLength()." bytes): {\n"; + foreach($this->elements as $key=>$value){ + $output .= "\t".$key.": ".$value."\n"; + } + $output .= "}"; + return $output; + } +} +?> -- cgit v1.2.3