Subversion Repositories PHPX

Compare Revisions

Last modification

Ignore whitespace Rev 79 → Rev 80

/trunk/footnotes.class.php
1,7 → 1,7
<?php
 
/**
* A footnote list contains {@link #Footnote Footnotes}
* A footnote list contains {@link Footnote Footnotes}
*
* @author Thomas 'PointedEars' Lahn &lt;php@PointedEars.de&gt;
*/
13,7 → 13,7
* @var Array
*/
protected $_footnotes;
 
/**
* Last used number sign for a footnote
*
20,15 → 20,15
* @var int
*/
protected $_lastNumberSign;
 
protected $_defaultPrefix;
protected $_defaultSuffix;
 
protected $_makeTooltip;
 
/* (non-PHPdoc) @see Footnote::_html4Compat */
protected $_html4Compat;
 
public function __construct($defaultPrefix = '', $defaultSuffix = '', $makeTooltip = false, $html4Compatible = false)
{
$this->clear();
37,7 → 37,7
$this->_makeTooltip = $makeTooltip;
$this->_html4Compat = $html4Compatible;
}
 
public function __get($name)
{
if (property_exists($this, "_$name"))
48,7 → 48,7
throw new InvalidArgumentException(
'No such property ' . get_class($this) . "::\$$name");
}
 
/**
* Clears the footnote list
*/
57,7 → 57,7
$this->_footnotes = array();
$this->_lastNumberSign = 0;
}
 
/**
* Adds a footnote to the list (unless already specified)
*
75,7 → 75,7
public function add($name, $sign = '', $text = '', $tooltip = null)
{
$footnotes =& $this->_footnotes;
 
if (!isset($footnotes[$name]))
{
if (!$sign)
86,16 → 86,16
{
$this->_lastNumberSign = $sign;
}
 
$footnotes[$name] = new Footnote($name, $sign, $text,
$this->_defaultSuffix, $this->_defaultPrefix,
$this->_makeTooltip ? ($tooltip !== null ? $tooltip : $text) : '',
$this->_html4Compat);
}
 
return $footnotes[$name]->getRef();
}
 
/**
* Prints the list of footnotes
*/
102,7 → 102,7
public function printMe()
{
$footnotes =& $this->_footnotes;
 
uasort($footnotes, function ($a, $b) {
/* Sort numbered footnotes first */
if (is_int($a->sign) && !is_int($b->sign))
114,7 → 114,7
{
return 1;
}
 
/* Sort footnotes either numerically or alphabetically */
/* TODO: Sort "1b" before "12a" */
if ($a->sign < $b->sign)
121,26 → 121,26
{
return -1;
}
 
if ($a->sign > $b->sign)
{
return 1;
}
 
return 0;
});
 
?><table class="footnotes">
<?php
 
foreach ($footnotes as $name => &$footnote)
{
$footnote->printMe();
}
 
?></table><?php
}
 
/**
* Prints the list of footnotes and clears the list in memory
*/
152,7 → 152,7
}
 
/**
* A footnote to be used in a {@link #FootnoteList "footnote list"}
* A footnote to be used in a {@link FootnoteList "footnote list"}
*
* @author Thomas 'PointedEars' Lahn &lt;php@PointedEars.de&gt;
*/
164,7 → 164,7
* @var string
*/
protected $_name = '';
 
/**
* The sign used for referring to this footnote
*
171,7 → 171,7
* @var string
*/
protected $_sign = '';
 
/**
* The text for this footnote
*
178,7 → 178,7
* @var string
*/
protected $_text = '';
 
protected $_prefix = '';
protected $_suffix = '';
protected $_tooltip = '';
190,7 → 190,7
* @var boolean
*/
protected $_html4Compat = false;
 
/**
* The number of times this footnote has been referred
*
197,7 → 197,7
* @var int
*/
protected $_references = 0;
 
/**
* Creates a footnote
*
244,7 → 244,7
throw new InvalidArgumentException(
'No such property ' . get_class($this) . "::\$$name");
}
 
/**
* Returns the reference for this footnote
*
269,10 → 269,10
. '</a></sup>';
 
++$this->_references;
 
return $ret;
}
 
/**
* Prints this footnote in a footnote list
*/
279,7 → 279,7
public function printMe()
{
$s = $this->_name;
 
echo " <tr>
<th><sup><a" . ($this->_html4Compat ? " name='footnote-{$s}'" : "")
. " id='footnote-{$s}' class='footnote'