2014-05-20 11:49:22 +00:00
< ? php
/**
* Created by Stefan Herndler .
* User : Stefan
* Date : 17.05 . 14
* Time : 00 : 16
* Version : 1.0
* Since : 1.0 - gamma
*/
/**
* converts a integer into the user - defined counter style for the footnotes
* @ since 1.0 - gamma
* @ param int $p_int_Index
* @ param string $p_str_ConvertStyle [ counter style ]
* @ return string
*/
2014-05-21 18:33:26 +00:00
function footnote_convert_index ( $p_int_Index , $p_str_ConvertStyle = " arabic_plain " )
2014-05-20 11:49:22 +00:00
{
2014-05-21 18:33:26 +00:00
switch ( $p_str_ConvertStyle ) {
case " romanic " :
return footnote_convert_to_romanic ( $p_int_Index );
case " latin_high " :
return footnote_convert_to_latin ( $p_int_Index , true );
case " latin_low " :
return footnote_convert_to_latin ( $p_int_Index , false );
case " arabic_leading " :
return footnote_convert_to_arabic_leading ( $p_int_Index );
case " arabic_plain " :
default :
return $p_int_Index ;
}
2014-05-20 11:49:22 +00:00
}
/**
* converts a integer into latin ascii characters , either lower or upper - case
* function available from A to ZZ ( means 676 footnotes at 1 page possible )
* @ since 1.0 - gamma
* @ param int $p_int_Value
* @ param bool $p_bool_UpperCase
* @ return string
*/
function footnote_convert_to_latin ( $p_int_Value , $p_bool_UpperCase )
{
2014-05-21 18:33:26 +00:00
/* decimal value of the starting ascii character */
$l_int_StartinAscii = 65 - 1 ; // = A
/* if lower-case, change decimal to lower-case "a" */
if ( ! $p_bool_UpperCase ) {
$l_int_StartinAscii = 97 - 1 ; // = a
}
/* output string */
$l_str_Return = " " ;
$l_int_Offset = 0 ;
/* check if the value is higher then 26 = Z */
while ( $p_int_Value > 26 ) {
/* increase offset and reduce counter */
$l_int_Offset ++ ;
$p_int_Value -= 26 ;
}
/* if offset set (more then Z), then add a new letter in fron */
if ( $l_int_Offset > 0 ) {
$l_str_Return = chr ( $l_int_Offset + $l_int_StartinAscii );
}
/* add the origin letter */
$l_str_Return .= chr ( $p_int_Value + $l_int_StartinAscii );
/* return the latin character representing the integer */
return $l_str_Return ;
2014-05-20 11:49:22 +00:00
}
/**
* converts a integer to a leading - 0 integer
* @ since 1.0 - gamma
* @ param int $p_int_Value
* @ return string
*/
function footnote_convert_to_arabic_leading ( $p_int_Value )
{
2014-05-21 18:33:26 +00:00
/* add a leading 0 if number lower then 10 */
if ( $p_int_Value < 10 ) {
return " 0 " . $p_int_Value ;
}
return $p_int_Value ;
2014-05-20 11:49:22 +00:00
}
/**
* converts a arabic integer value into a romanic letter value
* @ since 1.0 - gamma
* @ param int $p_int_Value
* @ return string
*/
function footnote_convert_to_romanic ( $p_int_Value )
{
2014-05-21 18:33:26 +00:00
/* table containing all necessary romanic letters */
$l_arr_RomanicLetters = array ( 'M' => 1000 , 'CM' => 900 , 'D' => 500 , 'CD' => 400 , 'C' => 100 , 'XC' => 90 , 'L' => 50 , 'XL' => 40 , 'X' => 10 , 'IX' => 9 , 'V' => 5 , 'IV' => 4 , 'I' => 1 );
/* return value */
$l_str_Return = '' ;
/* loop through integer value until it is reduced to 0 */
while ( $p_int_Value > 0 ) {
foreach ( $l_arr_RomanicLetters as $l_str_Romanic => $l_int_Arabic ) {
if ( $p_int_Value >= $l_int_Arabic ) {
$p_int_Value -= $l_int_Arabic ;
$l_str_Return .= $l_str_Romanic ;
break ;
}
}
}
/* return romanic letters as string */
return $l_str_Return ;
2014-05-20 11:49:22 +00:00
}