d25f770bc5
- Update: Easier usage of the public plugin name in translations - Update: New Layout for the settings page to group similar settings to get a better overview - Update: Display settings submit button only if there is at least 1 editable setting in the current tab - Add: setting where the reference container appears on public pages (needs some corrections!) - Bugfix: displays only one reference container in front of the footer on category pages git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@918851 b8457f37-d9ea-0310-8a92-e5e31aec5664
110 lines
No EOL
3.3 KiB
PHP
110 lines
No EOL
3.3 KiB
PHP
<?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
|
|
*/
|
|
function footnote_convert_index($p_int_Index, $p_str_ConvertStyle = "arabic_plain")
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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)
|
|
{
|
|
/* 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;
|
|
}
|
|
|
|
/**
|
|
* 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)
|
|
{
|
|
/* add a leading 0 if number lower then 10 */
|
|
if ($p_int_Value < 10) {
|
|
return "0" . $p_int_Value;
|
|
}
|
|
return $p_int_Value;
|
|
}
|
|
|
|
/**
|
|
* 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)
|
|
{
|
|
/* 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;
|
|
} |