mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-13 20:41:04 +00:00
97 lines
2.1 KiB
PHP
97 lines
2.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Description of Prc
|
|
*
|
|
* @author Sander
|
|
*/
|
|
class Prc extends FileElement {
|
|
public function __construct($settings, $records){
|
|
parent::__construct(array(
|
|
"title"=>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;
|
|
}
|
|
}
|
|
?>
|