'. sprintf(__("Hey there, I'm using the awesome WordPress Plugin called %sfootnotes%s", FOOTNOTES_PLUGIN_NAME), '', ''). '' ; } /** * replaces all footnotes in the given content * loading settings if not happened yet since 1.0-gamma * @since 1.0 * @param string $p_str_Content * @param bool $p_bool_OutputReferences [default: true] * @param bool $p_bool_ReplaceHtmlChars [ default: false] * @return string */ function footnotes_replaceFootnotes( $p_str_Content, $p_bool_OutputReferences = true, $p_bool_ReplaceHtmlChars = false ) { /* get access to the global array */ global $g_arr_Footnotes; /* access to the global settings collection */ global $g_arr_FootnotesSettings; /* load footnote settings */ $g_arr_FootnotesSettings = footnotes_filter_options( FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, $p_bool_ReplaceHtmlChars ); /* replace all footnotes in the content */ $p_str_Content = footnotes_getFromString( $p_str_Content ); /* add the reference list if set */ if ( $p_bool_OutputReferences ) { $p_str_Content = $p_str_Content . footnotes_OutputReferenceContainer(); /* free all found footnotes if reference container will be displayed */ $g_arr_Footnotes = array(); } /* return the replaced content */ return $p_str_Content; } /** * replace all footnotes in the given string and adds them to an array * using a personal starting and ending tag for the footnotes since 1.0-gamma * @since 1.0 * @param string $p_str_Content * @return string */ function footnotes_getFromString( $p_str_Content ) { /* get access to the global array to store footnotes */ global $g_arr_Footnotes; /* access to the global settings collection */ global $g_arr_FootnotesSettings; /* contains the index for the next footnote on this page */ $l_int_FootnoteIndex = 1; /* contains the starting position for the lookup of a footnote */ $l_int_PosStart = 0; /* contains the footnote template */ $l_str_FootnoteTemplate = file_get_contents( FOOTNOTES_TEMPLATES_DIR . "footnote.html" ); /* get footnote starting tag */ $l_str_StartingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_START]; /*get footnote ending tag */ $l_str_EndingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_END]; /*get footnote counter style */ $l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE]; /* check for a footnote placeholder in the current page */ do { /* get first occurence of a footnote starting tag */ $l_int_PosStart = strpos( $p_str_Content, $l_str_StartingTag, $l_int_PosStart ); /* tag found */ if ( $l_int_PosStart !== false ) { /* get first occurence of a footnote ending tag after the starting tag */ $l_int_PosEnd = strpos( $p_str_Content, $l_str_EndingTag, $l_int_PosStart ); /* tag found */ if ( $l_int_PosEnd !== false ) { /* get length of footnote text */ $l_int_Length = $l_int_PosEnd - $l_int_PosStart; /* get text inside footnote */ $l_str_FootnoteText = substr( $p_str_Content, $l_int_PosStart + strlen( $l_str_StartingTag ), $l_int_Length - strlen( $l_str_StartingTag ) ); /* set replacer for the footnote */ $l_str_ReplaceText = str_replace( "[[FOOTNOTE INDEX]]", footnote_convert_index($l_int_FootnoteIndex,$l_str_CounterStyle), $l_str_FootnoteTemplate ); $l_str_ReplaceText = str_replace( "[[FOOTNOTE TEXT]]", $l_str_FootnoteText, $l_str_ReplaceText ); /* replace footnote in content */ $p_str_Content = substr_replace( $p_str_Content, $l_str_ReplaceText, $l_int_PosStart, $l_int_Length + strlen( $l_str_EndingTag ) ); /* set footnote to the output box at the end */ $g_arr_Footnotes[ ] = $l_str_FootnoteText; /* increase footnote index */ $l_int_FootnoteIndex++; /* add offset to the new starting position */ $l_int_PosStart += ( $l_int_PosEnd - $l_int_PosStart ); /* no ending tag found */ } else { $l_int_PosStart++; } /* no starting tag found */ } else { break; } } while ( true ); /* return content */ return $p_str_Content; } /** * looks through all footnotes that has been replaced in the current content and * adds a reference to the footnote at the end of the content * function to collapse the reference container since 1.0-beta * @since 1.0 * @return string */ function footnotes_OutputReferenceContainer() { /* get access to the global array to read footnotes */ global $g_arr_Footnotes; /* access to the global settings collection */ global $g_arr_FootnotesSettings; /* no footnotes has been replaced on this page */ if ( empty( $g_arr_Footnotes ) ) { /* return empty string */ return ""; } /* get setting for combine identical footnotes and convert it to boolean */ $l_bool_CombineIdentical = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL ]); /* get setting for preferences label */ $l_str_ReferencesLabel = $g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_REFERENCES_LABEL ]; /* get setting for collapse reference footnotes and convert it to boolean */ $l_bool_CollapseReference = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES ]); /*get footnote counter style */ $l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE]; /* output string, prepare it with the reference label as headline */ $l_str_Output = '

' . $l_str_ReferencesLabel . '

'; /* add a box around the footnotes */ $l_str_Output .= '
'; /* add a javascript to expand the reference container when clicking on a footnote or the reference label */ $l_str_Output .= ' '; /* return the output string */ return $l_str_Output; }