Rev 7 | Rev 10 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 7 | Rev 8 | ||
|---|---|---|---|
| Line 55... | Line 55... | ||
| 55 |     {
 | 
            55 |     {
 | 
          
| 56 | if (!$sign)  | 
            56 | if (!$sign)  | 
          
| 57 |       {
 | 
            57 |       {
 | 
          
| 58 | $sign = ++$this->lastNumberSign;  | 
            58 | $sign = ++$this->lastNumberSign;  | 
          
| 59 |       }
 | 
            59 |       }
 | 
          
| 60 | 60 | ||
| 61 | $footnotes[$name] = new Footnote($sign, $text);  | 
            61 | $footnotes[$name] = new Footnote($name, $sign, $text);  | 
          
| 62 |     }
 | 
            62 |     }
 | 
          
| 63 | 63 | ||
| 64 | return $footnotes[$name]->printRef();  | 
            64 | return $footnotes[$name]->getRef();  | 
          
| 65 |   }
 | 
            65 |   }
 | 
          
| 66 | 66 | ||
| 67 |   /**
 | 
            67 |   /**
 | 
          
| 68 |    * Prints the list of footnotes
 | 
            68 |    * Prints the list of footnotes
 | 
          
| 69 |    */
 | 
            69 |    */
 | 
          
| 70 | public function printMe()  | 
            70 | public function printMe()  | 
          
| 71 |   {
 | 
            71 |   {
 | 
          
| 72 | $footnotes =& $this->footnotes;  | 
            72 | $footnotes =& $this->footnotes;  | 
          
| 73 | 73 | ||
| - | 74 | function cmp($a, $b)  | 
          |
| - | 75 |     {
 | 
          |
| - | 76 | if ($a->sign < $b->sign)  | 
          |
| - | 77 |       {
 | 
          |
| - | 78 | return -1;  | 
          |
| - | 79 |       }
 | 
          |
| - | 80 | else if ($a->sign > $b->sign)  | 
          |
| - | 81 |       {
 | 
          |
| - | 82 | return 1;  | 
          |
| - | 83 |       }
 | 
          |
| - | 84 |       else
 | 
          |
| - | 85 |       {
 | 
          |
| - | 86 | return 0;  | 
          |
| - | 87 |       }
 | 
          |
| - | 88 |     }
 | 
          |
| - | 89 | ||
| - | 90 | uasort($footnotes, 'cmp');  | 
          |
| - | 91 | ||
| - | 92 |     ?><table class="footnotes">
 | 
          |
| - | 93 |     <?php
 | 
          |
| - | 94 | ||
| 74 | foreach ($footnotes as $name => &$footnote)  | 
            95 | foreach ($footnotes as $name => &$footnote)  | 
          
| 75 |     {
 | 
            96 |     {
 | 
          
| 76 |       /* TODO */
 | 
            - | |
| 77 | $footnote->printMe();  | 
            97 | $footnote->printMe();  | 
          
| 78 |     }
 | 
            98 |     }
 | 
          
| - | 99 | ||
| - | 100 | ?></table><?php  | 
          |
| 79 |   }
 | 
            101 |   }
 | 
          
| 80 | 102 | ||
| 81 |   /**
 | 
            103 |   /**
 | 
          
| 82 |    * Prints the list of footnotes and clears the list in memory
 | 
            104 |    * Prints the list of footnotes and clears the list in memory
 | 
          
| 83 |    */
 | 
            105 |    */
 | 
          
| Line 94... | Line 116... | ||
| 94 |  * @author Thomas 'PointedEars' Lahn <php@PointedEars.de>
 | 
            116 |  * @author Thomas 'PointedEars' Lahn <php@PointedEars.de>
 | 
          
| 95 |  */
 | 
            117 |  */
 | 
          
| 96 | class Footnote
 | 
            118 | class Footnote
 | 
          
| 97 | {
 | 
            119 | {
 | 
          
| 98 |   /**
 | 
            120 |   /**
 | 
          
| - | 121 |    * The name of this footnote
 | 
          |
| - | 122 |    *
 | 
          |
| - | 123 |    * @var string
 | 
          |
| - | 124 |    */
 | 
          |
| - | 125 | protected $name = '';  | 
          |
| - | 126 | ||
| - | 127 |   /**
 | 
          |
| 99 |    * The sign used for referring to this footnote
 | 
            128 |    * The sign used for referring to this footnote
 | 
          
| 100 |    *
 | 
            129 |    *
 | 
          
| 101 |    * @var string
 | 
            130 |    * @var string
 | 
          
| 102 |    */
 | 
            131 |    */
 | 
          
| 103 | protected $sign = '';  | 
            132 | protected $sign = '';  | 
          
| Line 108... | Line 137... | ||
| 108 |    * @var string
 | 
            137 |    * @var string
 | 
          
| 109 |    */
 | 
            138 |    */
 | 
          
| 110 | protected $text = '';  | 
            139 | protected $text = '';  | 
          
| 111 | 140 | ||
| 112 |   /**
 | 
            141 |   /**
 | 
          
| - | 142 |    * The number of times this footnote has been referred
 | 
          |
| - | 143 |    *
 | 
          |
| - | 144 |    * @var int
 | 
          |
| - | 145 |    */
 | 
          |
| - | 146 | protected $references = 0;  | 
          |
| - | 147 | ||
| - | 148 |   /**
 | 
          |
| 113 |    * Creates a footnote
 | 
            149 |    * Creates a footnote
 | 
          
| 114 |    *
 | 
            150 |    *
 | 
          
| - | 151 |    * @param string $name
 | 
          |
| - | 152 |    *   The name of this footnote
 | 
          |
| 115 |    * @param string $sign
 | 
            153 |    * @param string $sign
 | 
          
| 116 |    *   The sign that should be used for referring to this footnote
 | 
            154 |    *   The sign that should be used for referring to this footnote
 | 
          
| 117 |    * @param string $text
 | 
            155 |    * @param string $text
 | 
          
| 118 |    *   The text for this footnote
 | 
            156 |    *   The text for this footnote
 | 
          
| 119 |    */
 | 
            157 |    */
 | 
          
| 120 | public function __construct($sign, $text)  | 
            158 | public function __construct($name, $sign, $text)  | 
          
| 121 |   {
 | 
            159 |   {
 | 
          
| - | 160 | $this->name = $name;  | 
          |
| 122 | $this->sign = $sign;  | 
            161 | $this->sign = $sign;  | 
          
| 123 | $this->text = $text;  | 
            162 | $this->text = $text;  | 
          
| 124 |   }
 | 
            163 |   }
 | 
          
| - | 164 | ||
| - | 165 |   /**
 | 
          |
| - | 166 |    * Universal getter
 | 
          |
| - | 167 |    *
 | 
          |
| - | 168 |    * @param string $name
 | 
          |
| - | 169 |    *   Name of the property to be read-accessed.  Currently only 'sign'
 | 
          |
| - | 170 |    *   is supported.
 | 
          |
| - | 171 |    * @throws Exception if a non-existing property is accessed
 | 
          |
| - | 172 |    * @return mixed
 | 
          |
| - | 173 |    *   Property value
 | 
          |
| - | 174 |    */
 | 
          |
| - | 175 | public function __get($name)  | 
          |
| - | 176 |   {
 | 
          |
| - | 177 | if ($name === 'sign')  | 
          |
| - | 178 |     {
 | 
          |
| - | 179 | return $this->sign;  | 
          |
| - | 180 |     }
 | 
          |
| - | 181 |     else
 | 
          |
| - | 182 |     {
 | 
          |
| - | 183 | throw new Exception('No such property ' . get_class($this) . "::\$$name");  | 
          |
| - | 184 |     }
 | 
          |
| - | 185 |   }
 | 
          |
| 125 | 186 | ||
| 126 |   /**
 | 
            187 |   /**
 | 
          
| 127 |    * Returns the reference for this footnote
 | 
            188 |    * Returns the reference for this footnote
 | 
          
| 128 |    *
 | 
            189 |    *
 | 
          
| 129 |    * @return string
 | 
            190 |    * @return string
 | 
          
| 130 |    */
 | 
            191 |    */
 | 
          
| 131 | public function printRef()  | 
            192 | public function getRef()  | 
          
| 132 |   {
 | 
            193 |   {
 | 
          
| - | 194 | $s = $this->name;  | 
          |
| - | 195 | ||
| - | 196 | $ret = "<sup><a href='#footnote-{$s}'"  | 
          |
| - | 197 | . ($this->references === 0  | 
          |
| - | 198 |         ? " name='fn-{$s}-ref' id='fn-{$s}-ref'"
 | 
          |
| - | 199 | : '')  | 
          |
| - | 200 | . " class='footnote'>{$this->sign}</a></sup>";  | 
          |
| - | 201 | ||
| - | 202 | ++$this->references;  | 
          |
| - | 203 | ||
| 133 | return "<sup>$sign</sup>";  | 
            204 | return $ret;  | 
          
| 134 |   }
 | 
            205 |   }
 | 
          
| 135 | 206 | ||
| 136 |   /**
 | 
            207 |   /**
 | 
          
| 137 |    * Prints this footnote in a footnote list
 | 
            208 |    * Prints this footnote in a footnote list
 | 
          
| 138 |    */
 | 
            209 |    */
 | 
          
| 139 | public function printMe()  | 
            210 | public function printMe()  | 
          
| 140 |   {
 | 
            211 |   {
 | 
          
| - | 212 | $s = $this->name;  | 
          |
| - | 213 | ||
| - | 214 | echo " <tr>  | 
          |
| - | 215 |         <th><sup><a name='footnote-{$s}' id='footnote-{$s}' class='footnote'
 | 
          |
| - | 216 |           >{$this->sign}</a></sup><a href='#fn-{$s}-ref' name='footnote-{$s}'
 | 
          |
| - | 217 |           id='footnote-{$s}' class='backref'>↑</a></th>
 | 
          |
| - | 218 |         <td>{$this->text}</td>
 | 
          |
| 141 |     /* TODO */
 | 
            219 |       </tr>
 | 
          
| - | 220 | ";  | 
          |
| 142 |   }
 | 
            221 |   }
 | 
          
| 143 | }
 | 
            222 | }
 | 
          
| 144 | 223 | ||
| 145 | ?>
 | 
            224 | ?>
 | 
          
| 146 | 225 | ||