1<?php
2class PreTreeFilterHTML2PSFields extends PreTreeFilter {
3  var $filename;
4  var $filesize;
5  var $_timestamp;
6
7  function PreTreeFilterHTML2PSFields($filename=null, $filesize=null, $timestamp=null) {
8    $this->filename  = $filename;
9    $this->filesize  = $filesize;
10
11    if (is_null($timestamp)) {
12      $this->_timestamp = date("Y-m-d H:s");
13    } else {
14      $this->_timestamp = $timestamp;
15    };
16  }
17
18  function process(&$tree, $data, &$pipeline) {
19    if (is_a($tree, 'TextBox')) {
20      // Ignore completely empty text boxes
21      if (count($tree->words) == 0) { return; };
22
23      switch ($tree->words[0]) {
24      case '##PAGE##':
25        $parent =& $tree->parent;
26        $field  = BoxTextFieldPageNo::from_box($tree);
27
28        $parent->insert_before($field, $tree);
29
30        $parent->remove($tree);
31        break;
32      case '##PAGES##':
33        $parent =& $tree->parent;
34        $field  = BoxTextFieldPages::from_box($tree);
35        $parent->insert_before($field, $tree);
36        $parent->remove($tree);
37        break;
38      case '##FILENAME##':
39        if (is_null($this->filename)) {
40          $tree->words[0] = $data->get_uri();
41        } else {
42          $tree->words[0] = $this->filename;
43        };
44        break;
45      case '##FILESIZE##':
46        if (is_null($this->filesize)) {
47          $tree->words[0] = strlen($data->get_content());
48        } else {
49          $tree->words[0] = $this->filesize;
50        };
51        break;
52      case '##TIMESTAMP##':
53        $tree->words[0] = $this->_timestamp;
54        break;
55      };
56    } elseif (is_a($tree, 'GenericContainerBox')) {
57      for ($i=0; $i<count($tree->content); $i++) {
58        $this->process($tree->content[$i], $data, $pipeline);
59      };
60    };
61  }
62}
63?>