043f2531ab
git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@2427643 b8457f37-d9ea-0310-8a92-e5e31aec5664
213 lines
5.7 KiB
PHP
213 lines
5.7 KiB
PHP
<?php
|
|
/**
|
|
* Includes the Convert Class.
|
|
*
|
|
* @filesource
|
|
* @author Stefan Herndler
|
|
* @since 1.5.0 12.09.14 10:56
|
|
*/
|
|
|
|
|
|
/**
|
|
* Converts data types and Footnotes specific values.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.5.0
|
|
*/
|
|
class MCI_Footnotes_Convert {
|
|
|
|
/**
|
|
* Converts a integer into the user-defined counter style for the footnotes.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.5.0
|
|
* @param int $p_int_Index Index to be converted.
|
|
* @param string $p_str_ConvertStyle Style of the new/converted Index.
|
|
* @return string Converted Index as string in the defined counter style.
|
|
*/
|
|
public static function Index($p_int_Index, $p_str_ConvertStyle = "arabic_plain") {
|
|
switch ($p_str_ConvertStyle) {
|
|
case "romanic":
|
|
return self::toRomanic($p_int_Index);
|
|
case "latin_high":
|
|
return self::toLatin($p_int_Index, true);
|
|
case "latin_low":
|
|
return self::toLatin($p_int_Index, false);
|
|
case "arabic_leading":
|
|
return self::toArabicLeading($p_int_Index);
|
|
case "arabic_plain":
|
|
default:
|
|
return $p_int_Index;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Converts an integer into latin ascii characters, either lower or upper-case.
|
|
* Function available from A to ZZ ( means 676 footnotes at 1 page possible).
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.0-gamma
|
|
* @param int $p_int_Value Value/Index to be converted.
|
|
* @param bool $p_bool_UpperCase True to convert the value to upper case letter, otherwise to lower case.
|
|
* @return string
|
|
*/
|
|
private static function toLatin($p_int_Value, $p_bool_UpperCase) {
|
|
// 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 front
|
|
if ($l_int_Offset > 0) {
|
|
$l_str_Return = chr($l_int_Offset + 64);
|
|
}
|
|
// add the origin letter
|
|
$l_str_Return .= chr($p_int_Value + 64);
|
|
// return the latin character representing the integer
|
|
if ($p_bool_UpperCase) {
|
|
return strtoupper($l_str_Return);
|
|
}
|
|
return strtolower($l_str_Return);
|
|
}
|
|
|
|
/**
|
|
* Converts an integer to a leading-0 integer.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.0-gamma
|
|
* @param int $p_int_Value Value/Index to be converted.
|
|
* @return string Value with a leading zero.
|
|
*/
|
|
private static function toArabicLeading($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 an integer to a romanic letter.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.0-gamma
|
|
* @param int $p_int_Value Value/Index to be converted.
|
|
* @return string
|
|
*/
|
|
private static function toRomanic($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 = '';
|
|
// iterate 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;
|
|
}
|
|
|
|
/**
|
|
* Converts a string depending on its value to a boolean.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.0-beta
|
|
* @param string $p_str_Value String to be converted to boolean.
|
|
* @return bool Boolean representing the string.
|
|
*/
|
|
public static function toBool($p_str_Value) {
|
|
// convert string to lower-case to make it easier
|
|
$p_str_Value = strtolower($p_str_Value);
|
|
// check if string seems to contain a "true" value
|
|
switch ($p_str_Value) {
|
|
case "checked":
|
|
case "yes":
|
|
case "true":
|
|
case "on":
|
|
case "1":
|
|
return true;
|
|
}
|
|
// nothing found that says "true", so we return false
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get a html Array short code depending on Arrow-Array key index.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.3.2
|
|
* @param int $p_int_Index Index representing the Arrow. If empty all Arrows are specified.
|
|
* @return array|string Array of all Arrows if Index is empty otherwise html tag of a specific arrow.
|
|
*/
|
|
public static function getArrow($p_int_Index = -1) {
|
|
// define all possible arrows
|
|
$l_arr_Arrows = array("↑", "↥", "↟", "↩", "↲", "↵", "⇑", "⇡", "⇧", "↑");
|
|
// convert index to an integer
|
|
if (!is_int($p_int_Index)) {
|
|
$p_int_Index = intval($p_int_Index);
|
|
}
|
|
// return the whole arrow array
|
|
if ($p_int_Index < 0 || $p_int_Index > count($l_arr_Arrows)) {
|
|
return $l_arr_Arrows;
|
|
}
|
|
// return a single arrow
|
|
return $l_arr_Arrows[$p_int_Index];
|
|
}
|
|
|
|
/**
|
|
* Displays a Variable.
|
|
*
|
|
* @author Stefan Herndler
|
|
* @since 1.5.0
|
|
* @param mixed $p_mixed_Value
|
|
*/
|
|
public static function debug($p_mixed_Value) {
|
|
if (empty($p_mixed_Value)) {
|
|
var_dump($p_mixed_Value);
|
|
|
|
} else if (is_array($p_mixed_Value)) {
|
|
printf("<pre>");
|
|
print_r($p_mixed_Value);
|
|
printf("</pre>");
|
|
|
|
} else if (is_object($p_mixed_Value)) {
|
|
printf("<pre>");
|
|
print_r($p_mixed_Value);
|
|
printf("</pre>");
|
|
|
|
} else if (is_numeric($p_mixed_Value) || is_int($p_mixed_Value)) {
|
|
var_dump($p_mixed_Value);
|
|
|
|
} else if (is_date($p_mixed_Value)) {
|
|
var_dump($p_mixed_Value);
|
|
|
|
} else {
|
|
var_dump($p_mixed_Value);
|
|
}
|
|
echo "<br/>";
|
|
}
|
|
}
|