diff --git a/class/config.php b/class/config.php
index 98a3245..8f02119 100644
--- a/class/config.php
+++ b/class/config.php
@@ -1,51 +1,44 @@
-foot';
/**
* Public Plugin name for dashboard heading
- *
+ *
* After properly displaying in dashboard headings until WPv5.4, the above started
- * in WPv5.5 being torn apart as if the headline was text-align:justify and not
+ * in WPv5.5 being torn apart as if the headline was text-align:justify and not
* the last line. That ugly display bug badly affected the plugin’s communication.
* The only working solution found so far is using position:fixed in one heading
* that isn’t translated, and dropping the logo in another, translatable heading.
@@ -58,7 +51,6 @@ class MCI_Footnotes_Config {
/**
* Html tag for the LOVE symbol.
*
- * @author Stefan Herndler
* @since 1.5.0
* @var string
*/
@@ -75,7 +67,6 @@ class MCI_Footnotes_Config {
/**
* Short code to DON'T display the 'LOVE ME' slug on certain pages.
*
- * @author Stefan Herndler
* @since 1.5.0
* @var string
*/
diff --git a/class/convert.php b/class/convert.php
index e1823ad..3adb313 100644
--- a/class/convert.php
+++ b/class/convert.php
@@ -3,20 +3,16 @@
* Includes the Convert Class.
*
* @filesource
- * @author Stefan Herndler
- * @since 1.5.0 12.09.14 10:56
- *
- * Edited:
+ * @package footnotes
+ * @since 1.5.0
+ * @date 12.09.14 10:56
+ *
* @since 2.2.0 add lowercase Roman 2020-12-12T1540+0100
- *
- * Last modified: 2020-12-12T1541+0100
*/
-
/**
* Converts data types and Footnotes specific values.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
class MCI_Footnotes_Convert {
@@ -24,30 +20,29 @@ 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.
+ * @param int $p_int_index Index to be converted.
+ * @param string $p_str_convert_style Style of the new/converted Index.
* @return string Converted Index as string in the defined counter style.
- *
+ *
* Edited:
* @since 2.2.0 lowercase Roman numerals supported
*/
- public static function Index($p_int_Index, $p_str_ConvertStyle = "arabic_plain") {
- switch ($p_str_ConvertStyle) {
- case "romanic":
- return self::toRomanic($p_int_Index, true);
- case "roman_low":
- return self::toRomanic($p_int_Index, false);
- 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":
+ public static function index( $p_int_index, $p_str_convert_style = 'arabic_plain' ) {
+ switch ( $p_str_convert_style ) {
+ case 'romanic':
+ return self::to_romanic( $p_int_index, true );
+ case 'roman_low':
+ return self::to_romanic( $p_int_index, false );
+ case 'latin_high':
+ return self::to_latin( $p_int_index, true );
+ case 'latin_low':
+ return self::to_latin( $p_int_index, false );
+ case 'arabic_leading':
+ return self::to_arabic_leading( $p_int_index );
+ case 'arabic_plain':
default:
- return $p_int_Index;
+ return $p_int_index;
}
}
@@ -55,175 +50,174 @@ class MCI_Footnotes_Convert {
* 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.
+ * @param int $p_int_value Value/Index to be converted.
+ * @param bool $p_bool_upper_case 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;
+ private static function to_latin( $p_int_value, $p_bool_upper_case ) {
+ // 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);
+ // 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);
+ // Add the origin letter.
+ $l_str_return .= chr( $p_int_value + 64 );
+ // Return the latin character representing the integer.
+ if ( $p_bool_upper_case ) {
+ return strtoupper( $l_str_return );
}
- return strtolower($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.
+ * @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;
+ private static function 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;
+ 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.
+ * @param int $p_int_value Value/Index to be converted.
+ * @param bool $p_bool_upper_case Whether to uppercase.
* @return string
- *
+ *
* Edited:
* @since 2.2.0 optionally lowercase (code from Latin) 2020-12-12T1538+0100
*/
- private static function toRomanic($p_int_Value, $p_bool_UpperCase) {
- // table containing all necessary romanic letters
- $l_arr_RomanicLetters = array(
- 'M' => 1000,
+ private static function to_romanic( $p_int_value, $p_bool_upper_case ) {
+ // Table containing all necessary romanic letters.
+ $l_arr_romanic_letters = array(
+ 'M' => 1000,
'CM' => 900,
- 'D' => 500,
+ 'D' => 500,
'CD' => 400,
- 'C' => 100,
+ 'C' => 100,
'XC' => 90,
- 'L' => 50,
+ 'L' => 50,
'XL' => 40,
- 'X' => 10,
+ 'X' => 10,
'IX' => 9,
- 'V' => 5,
+ 'V' => 5,
'IV' => 4,
- 'I' => 1
+ '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;
+ // Return value.
+ $l_str_return = '';
+ // Iterate through integer value until it is reduced to 0.
+ while ( $p_int_value > 0 ) {
+ foreach ( $l_arr_romanic_letters 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
- if ($p_bool_UpperCase) {
- return strtoupper($l_str_Return);
+ // Return romanic letters as string.
+ if ( $p_bool_upper_case ) {
+ return strtoupper( $l_str_return );
}
- return strtolower($l_str_Return);
+ return strtolower( $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.
+ * @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":
+ public static function to_bool( $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
+ // 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.
+ * @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);
+ public static function get_arrow( $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 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];
+ // Return a single arrow.
+ return $l_arr_arrows[ $p_int_index ];
}
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_dump
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_print_r
/**
* Displays a Variable.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param mixed $p_mixed_Value
+ * @param mixed $p_mixed_value The variable to display.
+ * @return void
*/
- public static function debug($p_mixed_Value) {
- if (empty($p_mixed_Value)) {
- var_dump($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("
");
- print_r($p_mixed_Value);
- printf("
");
+ } elseif ( is_array( $p_mixed_value ) ) {
+ printf( '' );
+ print_r( $p_mixed_value );
+ printf( '
' );
- } else if (is_object($p_mixed_Value)) {
- printf("");
- print_r($p_mixed_Value);
- printf("
");
+ } elseif ( is_object( $p_mixed_value ) ) {
+ printf( '' );
+ print_r( $p_mixed_value );
+ printf( '
' );
- } else if (is_numeric($p_mixed_Value) || is_int($p_mixed_Value)) {
- var_dump($p_mixed_Value);
+ } elseif ( 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);
+ } elseif ( is_date( $p_mixed_value ) ) {
+ var_dump( $p_mixed_value );
} else {
- var_dump($p_mixed_Value);
+ var_dump( $p_mixed_value );
}
- echo "
";
+ echo '
';
}
+ // phpcs:disable
}
diff --git a/class/hooks.php b/class/hooks.php
index e86d106..f5c90d1 100644
--- a/class/hooks.php
+++ b/class/hooks.php
@@ -1,19 +1,18 @@
-ClearAll();
}
/**
* Add Links to the Plugin in the "installed Plugins" page.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param array $p_arr_Links Current Links.
- * @param string $p_str_PluginFileName Plugins init file name.
+ * @param array $p_arr_links Current Links.
+ * @param string $p_str_plugin_file_name Plugins init file name.
* @return array
*/
- public static function PluginLinks($p_arr_Links, $p_str_PluginFileName) {
- // append link to the WordPress Plugin page
- $p_arr_Links[] = sprintf('%s', __('Support', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
- // append link to the Settings page
- $p_arr_Links[] = sprintf('%s', admin_url('admin.php?page=mfmmf-footnotes'), __('Settings', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
- // append link to the PlayPal Donate function
- $p_arr_Links[] = sprintf('%s', __('Donate', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
- // return new links
- return $p_arr_Links;
+ public static function plugin_links( $p_arr_links, $p_str_plugin_file_name ) {
+ // Append link to the WordPress Plugin page.
+ $p_arr_links[] = sprintf( '%s', __( 'Support', 'footnotes' ) );
+ // Append link to the settings page.
+ $p_arr_links[] = sprintf( '%s', admin_url( 'admin.php?page=mfmmf-footnotes' ), __( 'Settings', 'footnotes' ) );
+ // Append link to the PayPal donate function.
+ $p_arr_links[] = sprintf( '%s', __( 'Donate', 'footnotes' ) );
+ // Return new links.
+ return $p_arr_links;
}
}
diff --git a/class/init.php b/class/init.php
index e1001a3..45cd4ec 100644
--- a/class/init.php
+++ b/class/init.php
@@ -1,13 +1,11 @@
-initializeDashboard();
- // initialize the Plugin Task
- $this->initializeTask();
+ // Initialize the Plugin Dashboard.
+ $this->initialize_dashboard();
+ // Initialize the Plugin Task.
+ $this->initialize_task();
- // Register all Public Stylesheets and Scripts
- add_action('init', array($this, 'registerPublic'));
- // Enqueue all Public Stylesheets and Scripts
- add_action('wp_enqueue_scripts', array($this, 'registerPublic'));
- // Register all Widgets of the Plugin.
- add_action('widgets_init', array($this, 'initializeWidgets'));
+ // Register all Public Stylesheets and Scripts.
+ add_action( 'init', array( $this, 'register_public' ) );
+ // Enqueue all Public Stylesheets and Scripts.
+ add_action( 'wp_enqueue_scripts', array( $this, 'register_public' ) );
+ // Register all Widgets of the Plugin..
+ add_action( 'widgets_init', array( $this, 'initialize_widgets' ) );
}
/**
* Initializes all Widgets of the Plugin.
*
- * @author Stefan Herndler
* @since 1.5.0
*
- *
* - Update: Fix for deprecated PHP function create_function(), thanks to @psykonevro @daliasued bug reports, thanks to @felipelavinz code contribution
*
* @since 1.6.5
@@ -129,37 +124,34 @@ class MCI_Footnotes {
* and use the bare register_widget() here.
* @see self::run()
*
- * Also, the visibility of initializeWidgets() is not private any longer.
+ * Also, the visibility of initialize_widgets() is not private any longer.
*/
- public function initializeWidgets() {
- register_widget( "MCI_Footnotes_Widget_ReferenceContainer" );
+ public function initialize_widgets() {
+ register_widget( 'MCI_Footnotes_Widget_Reference_container' );
}
/**
* Initializes the Dashboard of the Plugin and loads them.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
- private function initializeDashboard() {
+ private function initialize_dashboard() {
new MCI_Footnotes_Layout_Init();
}
/**
* Initializes the Plugin Task and registers the Task hooks.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
- private function initializeTask() {
- $this->a_obj_Task = new MCI_Footnotes_Task();
- $this->a_obj_Task->registerHooks();
+ private function initialize_task() {
+ $this->a_obj_task = new MCI_Footnotes_Task();
+ $this->a_obj_task->register_hooks();
}
/**
* Registers and enqueues scripts and stylesheets to the public pages.
*
- * @author Stefan Herndler
* @since 1.5.0
*
* @since 2.0.0 Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
@@ -168,7 +160,7 @@ class MCI_Footnotes {
* @since 2.1.4 automate passing version number for cache busting 2020-11-30T0646+0100
* @since 2.1.4 optionally enqueue an extra stylesheet 2020-12-04T2231+0100
*/
- public function registerPublic() {
+ public function register_public() {
/**
* Enqueues external scripts.
@@ -181,10 +173,10 @@ class MCI_Footnotes {
*
* The condition about tooltips was missing, only the not-alternative-tooltips part was present.
*/
- // set conditions re-used for stylesheet enqueuing:
- self::$a_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED ) );
- self::$a_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE ) );
- $l_str_ScriptMode = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE);
+ // Set conditions re-used for stylesheet enqueuing.
+ self::$a_bool_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ENABLED ) );
+ self::$a_bool_alternative_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE ) );
+ $l_str_script_mode = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE );
/**
* Enqueues the jQuery library registered by WordPress.
@@ -195,68 +187,79 @@ class MCI_Footnotes {
*
* @reporter @hopper87it
* @link https://wordpress.org/support/topic/footnotes-wp-rocket/
- *
+ *
* jQuery is also used for animated scrolling, so it was loaded by default.
* The function wp_enqueue_script() avoids loading the same library multiple times.
* After adding the alternative reference container, jQuery has become optional,
* but still enabled by default.
*/
- if ( $l_str_ScriptMode == 'jquery' || ( self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled ) ) {
-
+ if ( 'jquery' === $l_str_script_mode || ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) ) {
+
wp_enqueue_script( 'jquery' );
-
+
}
- if ( self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled ) {
+ if ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) {
/**
* Enqueues the jQuery Tools library shipped with the plugin.
*
- * redacted jQuery.browser, completed minification;
- * see full header in js/jquery.tools.js
- * added versioning 2020-11-18T2150+0100
- * not use '-js' in the handle, is appended automatically
+ * Redacted jQuery.browser, completed minification;
+ * see full header in js/jquery.tools.js.
+ *
+ * Add versioning.
+ *
+ * @since 2.1.2
+ * @date 2020-11-18T2150+0100
+ *
+ * No '-js' in the handle, is appended automatically.
+ *
+ * Deferring to the footer breaks jQuery tooltip display.
+ * @date 2021-02-23T1105+0100
*/
wp_enqueue_script(
'mci-footnotes-jquery-tools',
- plugins_url('footnotes/js/jquery.tools.min.js'),
+ plugins_url( 'footnotes/js/jquery.tools.min.js' ),
array(),
- '1.2.7.redacted.2'
+ '1.2.7.redacted.2',
+ false
);
- /**
- * Registers jQuery UI from the JavaScript Content Delivery Network.
- *
- * - Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
- *
- * @since 2.0.0
- * Alternatively, fetch jQuery UI from cdnjs.cloudflare.com:
- * @since 2.0.0 add jQueryUI from Cloudflare 2020-10-26T1907+0100
- * Used to add jQuery UI following @vonpiernik:
- * :
- *
- *
- * jQueryUI re-enables the tooltip infobox disabled when WPv5.5 was released.
- *
- * Updated for v2.0.4 by adding jQuery UI from WordPress following @check2020de:
- *
- * See
- *
- * This was enabled in Footnotes v2.0.0 through v2.0.3.
- * Re-added for 2.0.9d1 / 2.1.1d0 to look whether it can fix a broken tooltip display. 2020-11-07T1601+0100/2020-11-08T2246+0100
- */
- //wp_register_script( 'jQueryUI', 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js', null, null, false ); // in header 2020-11-09T2003+0100
- //wp_enqueue_script( 'jQueryUI' );
- /**
- * This is then needed instead of the above first instance:
- * Add jQuery Tools and finish adding jQueryUI: 2020-11-08T1638+0100/2020-11-08T2246+0100
- */
- //wp_enqueue_script('mci-footnotes-js-jquery-tools', plugins_url('../js/jquery.tools.min.js', __FILE__), ['jQueryUI']);
-
/**
* Enqueues some jQuery UI libraries registered by WordPress.
*
- * @since 2.0.4 add jQuery UI from WordPress 2020-11-01T1902+0100
+ * - Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
+ *
+ * @since 2.0.0
+ *
+ * @reporter @rajinderverma
+ * @link https://wordpress.org/support/topic/tooltip-hover-not-showing/
+ *
+ * @reporter @ericcorbett2
+ * @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13324142
+ *
+ * @reporter @honlapdavid
+ * @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13355421
+ *
+ * @reporter @mmallett
+ * @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13445437
+ *
+ * Fetch jQuery UI from cdnjs.cloudflare.com.
+ * @since 2.0.0
+ * @date 2020-10-26T1907+0100
+ * @contributor @vonpiernik
+ * @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13456762
+ *
+ * jQueryUI re-enables the tooltip infobox disabled when WPv5.5 was released. * @since 2.1.2
+ *
+ * - Update: Libraries: Load jQuery UI from WordPress, thanks to @check2020de issue report.
+ *
+ * @since 2.0.4
+ * @date 2020-11-01T1902+0100
+ * @reporter @check2020de
+ * @link https://wordpress.org/support/topic/gdpr-issue-with-jquery/
+ * @link https://wordpress.stackexchange.com/questions/273986/correct-way-to-enqueue-jquery-ui
+ *
* If alternative tooltips are enabled, these libraries are not needed.
*/
wp_enqueue_script( 'jquery-ui-core' );
@@ -308,34 +311,43 @@ class MCI_Footnotes {
* The media scope argument 'all' is the default.
* No need to use '-css' in the handle, as this is appended automatically.
*/
- // set tooltip mode for use in stylesheet name:
- if ( self::$a_bool_TooltipsEnabled ) {
- if ( self::$a_bool_AlternativeTooltipsEnabled ) {
- $l_str_TooltipMode = 'al';
- $l_str_TComplement = 'ternative-tooltips';
+ // Set tooltip mode for use in stylesheet name.
+ if ( self::$a_bool_tooltips_enabled ) {
+ if ( self::$a_bool_alternative_tooltips_enabled ) {
+ $l_str_tooltip_mode_short = 'al';
+ $l_str_tooltip_mode_rest = 'ternative-tooltips';
} else {
- $l_str_TooltipMode = 'jq';
- $l_str_TComplement = 'uery-tooltips';
+ $l_str_tooltip_mode_short = 'jq';
+ $l_str_tooltip_mode_rest = 'uery-tooltips';
}
} else {
- $l_str_TooltipMode = 'no';
- $l_str_TComplement = '-tooltips';
+ $l_str_tooltip_mode_short = 'no';
+ $l_str_tooltip_mode_rest = '-tooltips';
}
- // set basic responsive page layout mode for use in stylesheet name:
- $l_str_PageLayoutOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT);
- switch ( $l_str_PageLayoutOption ) {
- case "reference-container": $l_str_LayoutMode = '1'; break;
- case "entry-content" : $l_str_LayoutMode = '2'; break;
- case "main-content" : $l_str_LayoutMode = '3'; break;
- case "none": default: $l_str_LayoutMode = '0'; break;
+ // Set basic responsive page layout mode for use in stylesheet name.
+ $l_str_page_layout_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT );
+ switch ( $l_str_page_layout_option ) {
+ case 'reference-container':
+ $l_str_layout_mode = '1';
+ break;
+ case 'entry-content':
+ $l_str_layout_mode = '2';
+ break;
+ case 'main-content':
+ $l_str_layout_mode = '3';
+ break;
+ case 'none':
+ default:
+ $l_str_layout_mode = '0';
+ break;
}
- // enqueue the tailored united minified stylesheet:
+ // Enqueue the tailored united minified stylesheet.
wp_enqueue_style(
- 'mci-footnotes-' . $l_str_TooltipMode . $l_str_TComplement . '-pagelayout-' . $l_str_PageLayoutOption,
+ 'mci-footnotes-' . $l_str_tooltip_mode_short . $l_str_tooltip_mode_rest . '-pagelayout-' . $l_str_page_layout_option,
plugins_url(
- MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/footnotes-' . $l_str_TooltipMode . 'ttbrpl' . $l_str_LayoutMode . '.min.css'
+ MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/footnotes-' . $l_str_tooltip_mode_short . 'ttbrpl' . $l_str_layout_mode . '.min.css'
),
array(),
C_STR_FOOTNOTES_VERSION,
@@ -356,12 +368,12 @@ class MCI_Footnotes {
wp_enqueue_style( 'mci-footnotes-tooltips', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips.css' ), array(), C_STR_FOOTNOTES_VERSION );
wp_enqueue_style( 'mci-footnotes-alternative', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips-alternative.css' ), array(), C_STR_FOOTNOTES_VERSION );
- $l_str_PageLayoutOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT);
- if ($l_str_PageLayoutOption != 'none') {
+ $l_str_page_layout_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT );
+ if ( 'none' !== $l_str_page_layout_option ) {
wp_enqueue_style(
- 'mci-footnotes-layout-' . $l_str_PageLayoutOption,
+ 'mci-footnotes-layout-' . $l_str_page_layout_option,
plugins_url(
- MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-layout-' . $l_str_PageLayoutOption . '.css'
+ MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-layout-' . $l_str_page_layout_option . '.css'
),
array(),
C_STR_FOOTNOTES_VERSION,
diff --git a/class/language.php b/class/language.php
index fccf143..fd86a8c 100644
--- a/class/language.php
+++ b/class/language.php
@@ -1,13 +1,11 @@
- array(
+ 'footnotes_storage' => array(
- self::C_STR_FOOTNOTES_SHORT_CODE_START => '((',
- self::C_STR_FOOTNOTES_SHORT_CODE_END => '))',
- self::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED => '',
- self::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED => '',
+ self::C_STR_FOOTNOTES_SHORT_CODE_START => '((',
+ self::C_STR_FOOTNOTES_SHORT_CODE_END => '))',
+ self::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED => '',
+ self::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED => '',
- self::C_BOOL_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE => 'yes',
+ self::C_STR_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE => 'yes',
- self::C_STR_FOOTNOTES_COUNTER_STYLE => 'arabic_plain',
- self::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES => 'yes',
+ self::C_STR_FOOTNOTES_COUNTER_STYLE => 'arabic_plain',
+ self::C_STR_COMBINE_IDENTICAL_FOOTNOTES => 'yes',
- self::C_BOOL_FOOTNOTES_HARD_LINKS_ENABLE => 'no',
- self::C_STR_REFERRER_FRAGMENT_ID_SLUG => 'r',
- self::C_STR_FOOTNOTE_FRAGMENT_ID_SLUG => 'f',
- self::C_STR_HARD_LINK_IDS_SEPARATOR => '+',
- self::C_INT_FOOTNOTES_SCROLL_OFFSET => 20,
- self::C_INT_FOOTNOTES_SCROLL_DURATION => 380,
+ self::C_STR_FOOTNOTES_HARD_LINKS_ENABLE => 'no',
+ self::C_STR_REFERRER_FRAGMENT_ID_SLUG => 'r',
+ self::C_STR_FOOTNOTE_FRAGMENT_ID_SLUG => 'f',
+ self::C_STR_HARD_LINK_IDS_SEPARATOR => '+',
+ self::C_INT_FOOTNOTES_SCROLL_OFFSET => 20,
+ self::C_INT_FOOTNOTES_SCROLL_DURATION => 380,
- // 2.5.4 fast-tracked:
- self::C_BOOL_FOOTNOTES_BACKLINK_TOOLTIP_ENABLE => 'yes',
- self::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_TEXT => 'Alt+ ←',
+ // 2.5.4 fast-tracked.
+ self::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_ENABLE => 'yes',
+ self::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_TEXT => 'Alt+ ←',
- self::C_STR_REFERENCE_CONTAINER_NAME => 'References',
- self::C_STR_REFERENCE_CONTAINER_LABEL_ELEMENT => 'p',
- self::C_BOOL_REFERENCE_CONTAINER_LABEL_BOTTOM_BORDER => 'yes',
- self::C_BOOL_REFERENCE_CONTAINER_COLLAPSE => 'no',
- self::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE => 'jquery',
+ self::C_STR_REFERENCE_CONTAINER_NAME => 'References',
+ self::C_STR_REFERENCE_CONTAINER_LABEL_ELEMENT => 'p',
+ self::C_STR_REFERENCE_CONTAINER_LABEL_BOTTOM_BORDER => 'yes',
+ self::C_STR_REFERENCE_CONTAINER_COLLAPSE => 'no',
+ self::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE => 'jquery',
- self::C_STR_REFERENCE_CONTAINER_POSITION => 'post_end',
- self::C_STR_REFERENCE_CONTAINER_POSITION_SHORTCODE => '[[references]]',
- self::C_BOOL_REFERENCE_CONTAINER_START_PAGE_ENABLE => 'yes',
+ self::C_STR_REFERENCE_CONTAINER_POSITION => 'post_end',
+ self::C_STR_REFERENCE_CONTAINER_POSITION_SHORTCODE => '[[references]]',
+ self::C_STR_REFERENCE_CONTAINER_START_PAGE_ENABLE => 'yes',
- // whether to enqueue additional stylesheet:
- self::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT => 'none',
+ // Whether to enqueue additional stylesheet.
+ self::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT => 'none',
- // top and bottom margins:
- self::C_INT_REFERENCE_CONTAINER_TOP_MARGIN => 24,
- self::C_INT_REFERENCE_CONTAINER_BOTTOM_MARGIN => 0,
+ // Top and bottom margins.
+ self::C_INT_REFERENCE_CONTAINER_TOP_MARGIN => 24,
+ self::C_INT_REFERENCE_CONTAINER_BOTTOM_MARGIN => 0,
- // table cell borders:
- self::C_BOOL_REFERENCE_CONTAINER_ROW_BORDERS_ENABLE => 'no',
+ // Table cell borders.
+ self::C_STR_REFERENCE_CONTAINER_ROW_BORDERS_ENABLE => 'no',
- // backlink symbol:
- self::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE => 'no',
- self::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE => 'yes',
- self::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH => 'no',
+ // Backlink symbol.
+ self::C_STR_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE => 'no',
+ self::C_STR_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE => 'yes',
+ self::C_STR_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH => 'no',
- // backlink separators and terminators are often not preferred.
- // but a choice must be provided along with the ability to customize:
- self::C_BOOL_BACKLINKS_SEPARATOR_ENABLED => 'yes',
- self::C_STR_BACKLINKS_SEPARATOR_OPTION => 'comma',
- self::C_STR_BACKLINKS_SEPARATOR_CUSTOM => '',
- self::C_BOOL_BACKLINKS_TERMINATOR_ENABLED => 'no',
- self::C_STR_BACKLINKS_TERMINATOR_OPTION => 'full_stop',
- self::C_STR_BACKLINKS_TERMINATOR_CUSTOM => '',
+ // Backlink separators and terminators are often not preferred..
+ // But a choice must be provided along with the ability to customize.
+ self::C_STR_BACKLINKS_SEPARATOR_ENABLED => 'yes',
+ self::C_STR_BACKLINKS_SEPARATOR_OPTION => 'comma',
+ self::C_STR_BACKLINKS_SEPARATOR_CUSTOM => '',
+ self::C_STR_BACKLINKS_TERMINATOR_ENABLED => 'no',
+ self::C_STR_BACKLINKS_TERMINATOR_OPTION => 'full_stop',
+ self::C_STR_BACKLINKS_TERMINATOR_CUSTOM => '',
- // set backlinks column width:
- self::C_BOOL_BACKLINKS_COLUMN_WIDTH_ENABLED => 'no',
- self::C_INT_BACKLINKS_COLUMN_WIDTH_SCALAR => '50',
- self::C_STR_BACKLINKS_COLUMN_WIDTH_UNIT => 'px',
+ // Set backlinks column width.
+ self::C_STR_BACKLINKS_COLUMN_WIDTH_ENABLED => 'no',
+ self::C_INT_BACKLINKS_COLUMN_WIDTH_SCALAR => '50',
+ self::C_STR_BACKLINKS_COLUMN_WIDTH_UNIT => 'px',
- // set backlinks column max. width:
- self::C_BOOL_BACKLINKS_COLUMN_MAX_WIDTH_ENABLED => 'no',
- self::C_INT_BACKLINKS_COLUMN_MAX_WIDTH_SCALAR => '140',
- self::C_STR_BACKLINKS_COLUMN_MAX_WIDTH_UNIT => 'px',
+ // Set backlinks column max. width.
+ self::C_STR_BACKLINKS_COLUMN_MAX_WIDTH_ENABLED => 'no',
+ self::C_INT_BACKLINKS_COLUMN_MAX_WIDTH_SCALAR => '140',
+ self::C_STR_BACKLINKS_COLUMN_MAX_WIDTH_UNIT => 'px',
- // whether a
tag is inserted:
- self::C_BOOL_BACKLINKS_LINE_BREAKS_ENABLED => 'no',
+ // Whether a
tag is inserted.
+ self::C_STR_BACKLINKS_LINE_BREAKS_ENABLED => 'no',
- // whether to enable URL line wrapping:
- self::C_BOOL_FOOTNOTE_URL_WRAP_ENABLED => 'yes',
+ // Whether to enable URL line wrapping.
+ self::C_STR_FOOTNOTE_URL_WRAP_ENABLED => 'yes',
- // whether to use link elements:
- self::C_BOOL_LINK_ELEMENT_ENABLED => 'yes',
+ // Whether to use link elements.
+ self::C_STR_LINK_ELEMENT_ENABLED => 'yes',
- // excerpt should be disabled:
- self::C_BOOL_FOOTNOTES_IN_EXCERPT => 'no',
+ // Excerpt should be disabled.
+ self::C_STR_FOOTNOTES_IN_EXCERPT => 'no',
- self::C_BOOL_FOOTNOTES_EXPERT_MODE => 'yes',
+ self::C_STR_FOOTNOTES_EXPERT_MODE => 'yes',
- self::C_STR_FOOTNOTES_LOVE => 'no',
+ self::C_STR_FOOTNOTES_LOVE => 'no',
),
- "footnotes_storage_custom" => array(
+ 'footnotes_storage_custom' => array(
- self::C_STR_HYPERLINK_ARROW => '↑',
- self::C_STR_HYPERLINK_ARROW_USER_DEFINED => '',
+ self::C_STR_HYPERLINK_ARROW => '↑',
+ self::C_STR_HYPERLINK_ARROW_USER_DEFINED => '',
- self::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL => 'Continue reading',
+ self::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL => 'Continue reading',
- self::C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS => 'yes',
+ self::C_STR_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS => 'yes',
- self::C_STR_FOOTNOTES_STYLING_BEFORE => '[',
- self::C_STR_FOOTNOTES_STYLING_AFTER => ']',
+ self::C_STR_FOOTNOTES_STYLING_BEFORE => '[',
+ self::C_STR_FOOTNOTES_STYLING_AFTER => ']',
- self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED => 'yes',
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ENABLED => 'yes',
- self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE => 'no',
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE => 'no',
- // The mouse over content truncation should be enabled by default
- // to raise awareness of the functionality and to prevent the screen
- // from being filled at mouse-over, and to allow the Continue reading:
- self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED => 'yes',
+ // The mouse over content truncation should be enabled by default.
+ // To raise awareness of the functionality and to prevent the screen.
+ // From being filled at mouse-over, and to allow the Continue reading.
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED => 'yes',
- // The truncation length is raised from 150 to 200 chars:
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH => 200,
+ // The truncation length is raised from 150 to 200 chars.
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH => 200,
- // 2.5.4 fast-tracked:
- self::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_DELIMITER => '[[/tooltip]]',
- self::C_BOOL_FOOTNOTES_TOOLTIP_EXCERPT_MIRROR_ENABLE => 'no',
- self::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_MIRROR_SEPARATOR => ' — ',
- self::C_STR_FOOTNOTE_REFERRERS_NORMAL_SUPERSCRIPT => 'no',
+ // 2.5.4 fast-tracked.
+ self::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_DELIMITER => '[[/tooltip]]',
+ self::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_MIRROR_ENABLE => 'no',
+ self::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_MIRROR_SEPARATOR => ' — ',
+ self::C_STR_FOOTNOTE_REFERRERS_NORMAL_SUPERSCRIPT => 'no',
- // The default position should not be lateral because of the risk
- // the box gets squeezed between note anchor at line end and window edge,
- // and top because reading at the bottom of the window is more likely:
- self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION => 'top center',
+ // The default position should not be lateral because of the risk.
+ // The box gets squeezed between note anchor at line end and window edge,.
+ // And top because reading at the bottom of the window is more likely.
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION => 'top center',
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X => 0,
- // The vertical offset must be negative for the box not to cover
- // the current line of text (web coordinates origin is top left):
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y => -7,
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X => 0,
+ // The vertical offset must be negative for the box not to cover.
+ // The current line of text (web coordinates origin is top left).
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y => -7,
- // The width should be limited to start with, for the box to have shape:
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH => 450,
+ // The width should be limited to start with, for the box to have shape.
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH => 450,
- // fixed width is for alternative tooltips, cannot reuse max-width nor offsets:
+ // Fixed width is for alternative tooltips, cannot reuse max-width nor offsets.
self::C_STR_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_POSITION => 'top right',
self::C_INT_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_OFFSET_X => -50,
- self::C_INT_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_OFFSET_Y => 24,
- self::C_INT_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_WIDTH => 400,
+ self::C_INT_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_OFFSET_Y => 24,
+ self::C_INT_FOOTNOTES_ALTERNATIVE_MOUSE_OVER_BOX_WIDTH => 400,
- // tooltip display durations:
- // called mouse over box not tooltip for consistency
- self::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY => 0,
- self::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION => 200,
- self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY => 400,
- self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION => 200,
+ // Tooltip display durations.
+ // Called mouse over box not tooltip for consistency.
+ self::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY => 0,
+ self::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION => 200,
+ self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY => 400,
+ self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION => 200,
- // tooltip font size reset to legacy by default since 2.1.4;
- // was set to inherit since 2.1.1 as it overrode custom CSS,
- // is moved to settings since 2.1.4 2020-12-04T1023+0100
- self::C_BOOL_MOUSE_OVER_BOX_FONT_SIZE_ENABLED => 'yes',
- self::C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR => 13,
- self::C_STR_MOUSE_OVER_BOX_FONT_SIZE_UNIT => 'px',
+ // Tooltip font size reset to legacy by default since 2.1.4;.
+ // Was set to inherit since 2.1.1 as it overrode custom CSS,.
+ // Is moved to settings since 2.1.4 2020-12-04T1023+0100.
+ self::C_STR_MOUSE_OVER_BOX_FONT_SIZE_ENABLED => 'yes',
+ self::C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR => 13,
+ self::C_STR_MOUSE_OVER_BOX_FONT_SIZE_UNIT => 'px',
- self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR => '',
- // The mouse over box shouldn’t feature a colored background
- // by default, due to diverging user preferences. White is neutral:
- self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BACKGROUND => '#ffffff',
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR => '',
+ // The mouse over box shouldn’t feature a colored background.
+ // By default, due to diverging user preferences. White is neutral.
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BACKGROUND => '#ffffff',
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_WIDTH => 1,
- self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BORDER_COLOR => '#cccc99',
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_WIDTH => 1,
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BORDER_COLOR => '#cccc99',
- // The mouse over box corners mustn’t be rounded as that is outdated:
- self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_RADIUS => 0,
+ // The mouse over box corners mustn’t be rounded as that is outdated.
+ self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_RADIUS => 0,
- self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_SHADOW_COLOR => '#666666',
+ self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_SHADOW_COLOR => '#666666',
- // Custom CSS migrates to a dedicated tab:
- self::C_STR_CUSTOM_CSS => '',
+ // Custom CSS migrates to a dedicated tab.
+ self::C_STR_CUSTOM_CSS => '',
),
- "footnotes_storage_expert" => array(
+ 'footnotes_storage_expert' => array(
- // These are checkboxes; keyword 'checked' is converted to Boolean true,
- // empty string to false (default):
+ // These are checkboxes; keyword 'checked' is converted to Boolean true,.
+ // Empty string to false (default).
- // Titles should all be enabled by default to prevent users from
- // thinking at first that the feature is broken in post titles.
- // See
- // Yet in titles, footnotes are still buggy, because WordPress
- // uses the title string in menus and in the title element.
- self::C_BOOL_EXPERT_LOOKUP_THE_TITLE => '',
+ // Titles should all be enabled by default to prevent users from.
+ // Thinking at first that the feature is broken in post titles..
+ // See .
+ // Yet in titles, footnotes are still buggy, because WordPress.
+ // Uses the title string in menus and in the title element..
+ self::C_STR_EXPERT_LOOKUP_THE_TITLE => '',
- self::C_BOOL_EXPERT_LOOKUP_THE_CONTENT => 'checked',
+ self::C_STR_EXPERT_LOOKUP_THE_CONTENT => 'checked',
- // And the_excerpt is disabled by default following @nikelaos in
- //
- //
- self::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT => '',
+ // And the_excerpt is disabled by default following @nikelaos in.
+ // .
+ // .
+ self::C_STR_EXPERT_LOOKUP_THE_EXCERPT => '',
- self::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE => '',
+ self::C_STR_EXPERT_LOOKUP_WIDGET_TITLE => '',
- // The widget_text hook must be disabled by default, because it causes
- // multiple reference containers to appear in Elementor accordions, but
- // it must be enabled if multiple reference containers are desired, as
- // in Elementor toggles.
- self::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT => '',
+ // The widget_text hook must be disabled by default, because it causes.
+ // Multiple reference containers to appear in Elementor accordions, but.
+ // It must be enabled if multiple reference containers are desired, as.
+ // In Elementor toggles..
+ self::C_STR_EXPERT_LOOKUP_WIDGET_TEXT => '',
- // initially hard-coded default
- // shows "9223372036854780000" instead of 9223372036854775807 in the numbox
- // empty should be interpreted as PHP_INT_MAX, but a numbox cannot be set to empty:
- //
- // interpret -1 as PHP_INT_MAX instead
- self::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL => PHP_INT_MAX,
+ // Initially hard-coded default.
+ // Shows "9223372036854780000" instead of 9223372036854775807 in the numbox.
+ // Empty should be interpreted as PHP_INT_MAX, but a numbox cannot be set to empty.
+ // .
+ // Interpret -1 as PHP_INT_MAX instead.
+ self::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL => PHP_INT_MAX,
- // Priority level of the_content and of widget_text as the only relevant
- // hooks must be less than 99 because social buttons may yield scripts
- // that contain the strings '((' and '))', i.e. the default footnote
- // start and end short codes, causing issues with fake footnotes.
- self::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL => 98,
- self::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL => PHP_INT_MAX,
- self::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL => PHP_INT_MAX,
- self::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL => 98,
+ // Priority level of the_content and of widget_text as the only relevant.
+ // Hooks must be less than 99 because social buttons may yield scripts.
+ // That contain the strings '((' and '))', i.e. the default footnote.
+ // Start and end short codes, causing issues with fake footnotes..
+ self::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL => 98,
+ self::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL => PHP_INT_MAX,
+ self::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL => PHP_INT_MAX,
+ self::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL => 98,
),
- "footnotes_storage_custom_css" => array(
+ 'footnotes_storage_custom_css' => array(
- self::C_BOOL_CUSTOM_CSS_LEGACY_ENABLE => 'yes',
- self::C_STR_CUSTOM_CSS_NEW => '',
+ self::C_STR_CUSTOM_CSS_LEGACY_ENABLE => 'yes',
+ self::C_STR_CUSTOM_CSS_NEW => '',
),
@@ -1074,130 +1032,123 @@ class MCI_Footnotes_Settings {
/**
* Contains all Settings from each Settings container as soon as this class is initialized.
*
- * @author Stefan Herndler
* @since 1.5.0
* @var array
*/
- private $a_arr_Settings = array();
+ private $a_arr_settings = array();
/**
* Class Constructor. Loads all Settings from each WordPress Settings container.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
private function __construct() {
- $this->loadAll();
+ $this->load_all();
}
/**
* Returns a singleton of this class.
*
- * @author Stefan Herndler
* @since 1.5.0
* @return MCI_Footnotes_Settings
*/
public static function instance() {
- // no instance defined yet, load it
- if (self::$a_obj_Instance === null) {
- self::$a_obj_Instance = new self();
+ // No instance defined yet, load it.
+ if ( ! self::$a_obj_instance ) {
+ self::$a_obj_instance = new self();
}
- // return a singleton of this class
- return self::$a_obj_Instance;
+ // Return a singleton of this class.
+ return self::$a_obj_instance;
}
/**
* Returns the name of a specified Settings Container.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param int $p_int_Index Settings Container Array Key Index.
+ * @param int $p_int_index Settings Container Array Key Index.
* @return str Settings Container name.
*/
- public function getContainer($p_int_Index) {
- return $this->a_arr_Container[$p_int_Index];
+ public function get_container( $p_int_index ) {
+ return $this->a_arr_container[ $p_int_index ];
}
/**
* Returns the default values of a specific Settings Container.
*
- * @author Stefan Herndler
* @since 1.5.6
- * @param int $p_int_Index Settings Container Aray Key Index.
+ * @param int $p_int_index Settings Container Aray Key Index.
* @return array
*/
- public function getDefaults($p_int_Index) {
- return $this->a_arr_Default[$this->a_arr_Container[$p_int_Index]];
+ public function get_defaults( $p_int_index ) {
+ return $this->a_arr_default[ $this->a_arr_container[ $p_int_index ] ];
}
/**
* Loads all Settings from each Settings container.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
- private function loadAll() {
- // clear current settings
- $this->a_arr_Settings = array();
- for ($i = 0; $i < count($this->a_arr_Container); $i++) {
- // load settings
- $this->a_arr_Settings = array_merge($this->a_arr_Settings, $this->Load($i));
+ private function load_all() {
+ // Clear current settings.
+ $this->a_arr_settings = array();
+ $num_settings = count( $this->a_arr_container );
+ for ( $i = 0; $i < $num_settings; $i++ ) {
+ // Load settings.
+ $this->a_arr_settings = array_merge( $this->a_arr_settings, $this->load( $i ) );
}
}
/**
* Loads all Settings from specified Settings Container.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param int $p_int_Index Settings Container Array Key Index.
+ * @param int $p_int_index Settings Container Array Key Index.
* @return array Settings loaded from Container of Default Settings if Settings Container is empty (first usage).
*
* @since ditched trimming whitespace from text box content in response to user request.
* @link https://wordpress.org/support/topic/leading-space-in-footnotes-tag/#post-5347966
*/
- private function Load($p_int_Index) {
- // load all settings from container
- $l_arr_Options = get_option($this->getContainer($p_int_Index));
- // load all default settings
- $l_arr_Default = $this->a_arr_Default[$this->getContainer($p_int_Index)];
+ private function load( $p_int_index ) {
+ // Load all settings from container.
+ $l_arr_options = get_option( $this->get_container( $p_int_index ) );
+ // Load all default settings.
+ $l_arr_default = $this->a_arr_default[ $this->get_container( $p_int_index ) ];
- // no settings found, set them to their default value
- if (empty($l_arr_Options)) {
- return $l_arr_Default;
+ // No settings found, set them to their default value.
+ if ( empty( $l_arr_options ) ) {
+ return $l_arr_default;
}
- // iterate through all available settings ( = default values)
- foreach($l_arr_Default as $l_str_Key => $l_str_Value) {
- // available setting not found in the container
- if (!array_key_exists($l_str_Key, $l_arr_Options)) {
- // define the setting with its default value
- $l_arr_Options[$l_str_Key] = $l_str_Value;
+ // Iterate through all available settings ( = default values).
+ foreach ( $l_arr_default as $l_str_key => $l_str_value ) {
+ // Available setting not found in the container.
+ if ( ! array_key_exists( $l_str_key, $l_arr_options ) ) {
+ // Define the setting with its default value.
+ $l_arr_options[ $l_str_key ] = $l_str_value;
}
}
- // iterate through each setting in the container
- foreach($l_arr_Options as $l_str_Key => $l_str_Value) {
- // remove all whitespace at the beginning and end of a setting
- // trimming whitespace is ditched:
- //$l_str_Value = trim($l_str_Value);
- // write the sanitized value back to the setting container
- $l_arr_Options[$l_str_Key] = $l_str_Value;
+ // Iterate through each setting in the container.
+ foreach ( $l_arr_options as $l_str_key => $l_str_value ) {
+ // Remove all whitespace at the beginning and end of a setting.
+ // Trimming whitespace is ditched.
+ // $l_str_value = trim($l_str_value);.
+ // Write the sanitized value back to the setting container.
+ $l_arr_options[ $l_str_key ] = $l_str_value;
}
- // return settings loaded from Container
- return $l_arr_Options;
+ // Return settings loaded from Container.
+ return $l_arr_options;
}
/**
* Updates a whole Settings container.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param int $p_int_Index Index of the Settings container.
- * @param array $p_arr_newValues new Settings.
+ * @param int $p_int_index Index of the Settings container.
+ * @param array $p_arr_new_values new Settings.
* @return bool
*/
- public function saveOptions($p_int_Index, $p_arr_newValues) {
- if (update_option($this->getContainer($p_int_Index), $p_arr_newValues)) {
- $this->loadAll();
+ public function save_options( $p_int_index, $p_arr_new_values ) {
+ if ( update_option( $this->get_container( $p_int_index ), $p_arr_new_values ) ) {
+ $this->load_all();
return true;
}
return false;
@@ -1206,19 +1157,17 @@ class MCI_Footnotes_Settings {
/**
* Returns the value of specified Settings name.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Key Settings Array Key name.
+ * @param string $p_str_key Settings Array Key name.
* @return mixed Value of the Setting on Success or Null in Settings name is invalid.
*/
- public function get($p_str_Key) {
- return array_key_exists($p_str_Key, $this->a_arr_Settings) ? $this->a_arr_Settings[$p_str_Key] : null;
+ public function get( $p_str_key ) {
+ return array_key_exists( $p_str_key, $this->a_arr_settings ) ? $this->a_arr_settings[ $p_str_key ] : null;
}
/**
* Deletes each Settings Container and loads the default values for each Settings Container.
*
- * @author Stefan Herndler
* @since 1.5.0
*
* Edit: This didn’t actually work.
@@ -1227,27 +1176,28 @@ class MCI_Footnotes_Settings {
* done by deleting and reinstalling (see the warning about database backup).
* 2020-12-13T1353+0100
*/
- public function ClearAll() {
- // iterate through each Settings Container
- for ($i = 0; $i < count($this->a_arr_Container); $i++) {
- // delete the settings container
- delete_option($this->getContainer($i));
+ public function clear_all() {
+ // Iterate through each Settings Container.
+ $num_settings = count( $this->a_arr_container );
+ for ( $i = 0; $i < $num_settings; $i++ ) {
+ // Delete the settings container.
+ delete_option( $this->get_container( $i ) );
}
- // set settings back to the default values
- $this->a_arr_Settings = $this->a_arr_Default;
+ // Set settings back to the default values.
+ $this->a_arr_settings = $this->a_arr_default;
}
/**
* Register all Settings Container for the Plugin Settings Page in the Dashboard.
* Settings Container Label will be the same as the Settings Container Name.
*
- * @author Stefan Herndler
* @since 1.5.0
*/
- public function RegisterSettings() {
- // register all settings
- for ($i = 0; $i < count($this->a_arr_Container); $i++) {
- register_setting($this->getContainer($i), $this->getContainer($i));
+ public function register_settings() {
+ // Register all settings.
+ $num_settings = count( $this->a_arr_container );
+ for ( $i = 0; $i < $num_settings; $i++ ) {
+ register_setting( $this->get_container( $i ), $this->get_container( $i ) );
}
}
}
diff --git a/class/task.php b/class/task.php
index 249636c..e39a7e4 100644
--- a/class/task.php
+++ b/class/task.php
@@ -1,12 +1,11 @@
-get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL));
- $l_int_TheContentPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL));
- $l_int_TheExcerptPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL));
- $l_int_WidgetTitlePriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL));
- $l_int_WidgetTextPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL));
+ // Get values from settings.
+ $l_int_the_title_priority = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL ) );
+ $l_int_the_content_priority = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL ) );
+ $l_int_the_excerpt_priority = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL ) );
+ $l_int_widget_title_priority = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL ) );
+ $l_int_widget_text_priority = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL ) );
- // PHP_INT_MAX can be set by -1:
- $l_int_TheTitlePriority = ($l_int_TheTitlePriority == -1) ? PHP_INT_MAX : $l_int_TheTitlePriority ;
- $l_int_TheContentPriority = ($l_int_TheContentPriority == -1) ? PHP_INT_MAX : $l_int_TheContentPriority ;
- $l_int_TheExcerptPriority = ($l_int_TheExcerptPriority == -1) ? PHP_INT_MAX : $l_int_TheExcerptPriority ;
- $l_int_WidgetTitlePriority = ($l_int_WidgetTitlePriority == -1) ? PHP_INT_MAX : $l_int_WidgetTitlePriority;
- $l_int_WidgetTextPriority = ($l_int_WidgetTextPriority == -1) ? PHP_INT_MAX : $l_int_WidgetTextPriority ;
+ // PHP_INT_MAX can be set by -1.
+ $l_int_the_title_priority = ( -1 === $l_int_the_title_priority ) ? PHP_INT_MAX : $l_int_the_title_priority;
+ $l_int_the_content_priority = ( -1 === $l_int_the_content_priority ) ? PHP_INT_MAX : $l_int_the_content_priority;
+ $l_int_the_excerpt_priority = ( -1 === $l_int_the_excerpt_priority ) ? PHP_INT_MAX : $l_int_the_excerpt_priority;
+ $l_int_widget_title_priority = ( -1 === $l_int_widget_title_priority ) ? PHP_INT_MAX : $l_int_widget_title_priority;
+ $l_int_widget_text_priority = ( -1 === $l_int_widget_text_priority ) ? PHP_INT_MAX : $l_int_widget_text_priority;
+ // Append custom css to the header.
+ add_filter( 'wp_head', array( $this, 'wp_head' ), PHP_INT_MAX );
- // append custom css to the header
- add_filter('wp_head', array($this, "wp_head"), PHP_INT_MAX);
+ // Append the love and share me slug to the footer.
+ add_filter( 'wp_footer', array( $this, 'wp_footer' ), PHP_INT_MAX );
- // append the love and share me slug to the footer
- add_filter('wp_footer', array($this, "wp_footer"), PHP_INT_MAX);
-
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_TITLE))) {
- add_filter('the_title', array($this, "the_title"), $l_int_TheTitlePriority);
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_EXPERT_LOOKUP_THE_TITLE ) ) ) {
+ add_filter( 'the_title', array( $this, 'the_title' ), $l_int_the_title_priority );
}
- // configurable priority level for reference container relative positioning; default 98:
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_CONTENT))) {
- add_filter('the_content', array($this, "the_content"), $l_int_TheContentPriority);
+ // Configurable priority level for reference container relative positioning; default 98.
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_EXPERT_LOOKUP_THE_CONTENT ) ) ) {
+ add_filter( 'the_content', array( $this, 'the_content' ), $l_int_the_content_priority );
/**
- * Hook for category pages
+ * Hook for category pages.
*
* - Bugfix: Hooks: support footnotes on category pages, thanks to @vitaefit bug report, thanks to @misfist code contribution.
*
@@ -462,10 +533,10 @@ class MCI_Footnotes_Task {
* For this to happen, WordPress’ built-in partial HTML blocker needs to be disabled.
* @link https://docs.woocommerce.com/document/allow-html-in-term-category-tag-descriptions/
*/
- add_filter('term_description', array($this, "the_content"), $l_int_TheContentPriority);
+ add_filter( 'term_description', array( $this, 'the_content' ), $l_int_the_content_priority );
/**
- * Hook for popup maker popups
+ * Hook for popup maker popups.
*
* - Bugfix: Hooks: support footnotes in Popup Maker popups, thanks to @squatcher bug report.
*
@@ -475,22 +546,21 @@ class MCI_Footnotes_Task {
* @reporter @squatcher
* @link https://wordpress.org/support/topic/footnotes-use-in-popup-maker/
*/
- add_filter('pum_popup_content', array($this, "the_content"), $l_int_TheContentPriority);
+ add_filter( 'pum_popup_content', array( $this, 'the_content' ), $l_int_the_content_priority );
}
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT))) {
- add_filter('the_excerpt', array($this, "the_excerpt"), $l_int_TheExcerptPriority);
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_EXPERT_LOOKUP_THE_EXCERPT ) ) ) {
+ add_filter( 'the_excerpt', array( $this, 'the_excerpt' ), $l_int_the_excerpt_priority );
}
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE))) {
- add_filter('widget_title', array($this, "widget_title"), $l_int_WidgetTitlePriority);
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_EXPERT_LOOKUP_WIDGET_TITLE ) ) ) {
+ add_filter( 'widget_title', array( $this, 'widget_title' ), $l_int_widget_title_priority );
}
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT))) {
- add_filter('widget_text', array($this, "widget_text"), $l_int_WidgetTextPriority);
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_EXPERT_LOOKUP_WIDGET_TEXT ) ) ) {
+ add_filter( 'widget_text', array( $this, 'widget_text' ), $l_int_widget_text_priority );
}
-
/**
- * The the_post hook
+ * The the_post hook.
*
* - Adding: Hooks: support 'the_post' in response to user request for custom post types.
*
@@ -555,18 +625,16 @@ class MCI_Footnotes_Task {
* @accountable @pewgeuges
*/
- // reset stored footnotes when displaying the header
- self::$a_arr_Footnotes = array();
- self::$a_bool_AllowLoveMe = true;
+ // Reset stored footnotes when displaying the header.
+ self::$a_arr_footnotes = array();
+ self::$a_bool_allow_love_me = true;
}
/**
* Outputs the custom css to the header of the public page.
*
- * @author Stefan Herndler
* @since 1.5.0
*
- *
* @since 2.1.1 Bugfix: Reference container: fix start pages by making its display optional, thanks to @dragon013 bug report.
* @since 2.1.1 Bugfix: Tooltips: optional alternative JS implementation with CSS transitions to fix configuration-related outage, thanks to @andreasra feedback.
* @since 2.1.3 raise settings priority to override theme stylesheets
@@ -579,7 +647,7 @@ class MCI_Footnotes_Task {
*/
public function wp_head() {
- // insert start tag without switching out of PHP:
+ // Insert start tag without switching out of PHP.
echo "\r\n\r\n";
/**
@@ -921,184 +1002,222 @@ class MCI_Footnotes_Task {
* @reporter @andreasra
* @link https://wordpress.org/support/topic/footnotes-appearing-in-header/page/2/#post-13632566
*
- * The script for alternative tooltips is printed formatted, not minified:
+ * The script for alternative tooltips is printed formatted, not minified,
+ * for transparency. It isn’t indented though (the PHP open tag neither).
*/
- if ( self::$a_bool_AlternativeTooltipsEnabled ) {
+ if ( self::$a_bool_alternative_tooltips_enabled ) {
+
+ // Start internal script.
?>
-get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION) == "footer") {
- echo $this->ReferenceContainer();
+ if ( 'footer' === MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION ) ) {
+ echo $this->reference_container();
}
- // get setting for love and share this plugin
- $l_str_LoveMeIndex = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_LOVE);
- // check if the admin allows to add a link to the footer
- if (empty($l_str_LoveMeIndex) || strtolower($l_str_LoveMeIndex) == "no" || !self::$a_bool_AllowLoveMe) {
+ // Get setting for love and share this plugin.
+ $l_str_love_me_index = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_LOVE );
+ // Check if the admin allows to add a link to the footer.
+ if ( empty( $l_str_love_me_index ) || 'no' === strtolower( $l_str_love_me_index ) || ! self::$a_bool_allow_love_me ) {
return;
}
- // set a hyperlink to the word "footnotes" in the Love slug
- $l_str_LinkedName = sprintf('%s', MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME);
- // get random love me text
- if (strtolower($l_str_LoveMeIndex) == "random") {
- $l_str_LoveMeIndex = "text-" . rand(1,7);
+ // Set a hyperlink to the word "footnotes" in the Love slug.
+ $l_str_linked_name = sprintf( '%s', MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME );
+ // Get random love me text.
+ if ( 'random' === strtolower( $l_str_love_me_index ) ) {
+ $l_str_love_me_index = 'text-' . wp_rand( 1, 7 );
}
- switch ($l_str_LoveMeIndex) {
- // options named wrt backcompat, simplest is default:
- case "text-1": $l_str_LoveMeText = sprintf(__('I %2$s %1$s', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), $l_str_LinkedName, MCI_Footnotes_Config::C_STR_LOVE_SYMBOL); break;
- case "text-2": $l_str_LoveMeText = sprintf(__('This website uses the awesome %s plugin.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), $l_str_LinkedName); break;
- case "text-4": $l_str_LoveMeText = sprintf('%s %s', $l_str_LinkedName, MCI_Footnotes_Config::C_STR_LOVE_SYMBOL); break;
- case "text-5": $l_str_LoveMeText = sprintf('%s %s', MCI_Footnotes_Config::C_STR_LOVE_SYMBOL, $l_str_LinkedName); break;
- case "text-6": $l_str_LoveMeText = sprintf(__('This website uses %s.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), $l_str_LinkedName); break;
- case "text-7": $l_str_LoveMeText = sprintf(__('This website uses the %s plugin.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), $l_str_LinkedName); break;
- case "text-3": default: $l_str_LoveMeText = sprintf('%s', $l_str_LinkedName); break;
+ switch ( $l_str_love_me_index ) {
+ // Options named wrt backcompat, simplest is default.
+ case 'text-1':
+ /* Translators: 2: Link to plugin page 1: Love heart symbol */
+ $l_str_love_me_text = sprintf( __( 'I %2$s %1$s', 'footnotes' ), $l_str_linked_name, MCI_Footnotes_Config::C_STR_LOVE_SYMBOL );
+ break;
+ case 'text-2':
+ /* Translators: %s: Link to plugin page */
+ $l_str_love_me_text = sprintf( __( 'This website uses the awesome %s plugin.', 'footnotes' ), $l_str_linked_name );
+ break;
+ case 'text-4':
+ /* Translators: 1: Link to plugin page 2: Love heart symbol */
+ $l_str_love_me_text = sprintf( '%1$s %2$s', $l_str_linked_name, MCI_Footnotes_Config::C_STR_LOVE_SYMBOL );
+ break;
+ case 'text-5':
+ /* Translators: 1: Love heart symbol 2: Link to plugin page */
+ $l_str_love_me_text = sprintf( '%1$s %2$s', MCI_Footnotes_Config::C_STR_LOVE_SYMBOL, $l_str_linked_name );
+ break;
+ case 'text-6':
+ /* Translators: %s: Link to plugin page */
+ $l_str_love_me_text = sprintf( __( 'This website uses %s.', 'footnotes' ), $l_str_linked_name );
+ break;
+ case 'text-7':
+ /* Translators: %s: Link to plugin page */
+ $l_str_love_me_text = sprintf( __( 'This website uses the %s plugin.', 'footnotes' ), $l_str_linked_name );
+ break;
+ case 'text-3':
+ default:
+ /* Translators: %s: Link to plugin page */
+ $l_str_love_me_text = sprintf( '%s', $l_str_linked_name );
+ break;
}
- echo sprintf('%s
', $l_str_LoveMeText);
+ echo sprintf( '%s
', $l_str_love_me_text );
}
/**
* Replaces footnotes in the post/page title.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Widget content.
+ * @param string $p_str_content Widget content.
* @return string Content with replaced footnotes.
*/
- public function the_title($p_str_Content) {
- // appends the reference container if set to "post_end"
- return $this->exec($p_str_Content, false);
+ public function the_title( $p_str_content ) {
+ // Appends the reference container if set to "post_end".
+ return $this->exec( $p_str_content, false );
}
/**
* Replaces footnotes in the content of the current page/post.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Page/Post content.
+ * @param string $p_str_content Page/Post content.
* @return string Content with replaced footnotes.
*/
- public function the_content($p_str_Content) {
- // appends the reference container if set to "post_end"
- return $this->exec($p_str_Content, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION) == "post_end" ? true : false);
+ public function the_content( $p_str_content ) {
+ /**
+ * Empties the footnotes list every time Footnotes is run when the_content hook is called.
+ *
+ * - Bugfix: Process: fix footnote duplication by emptying the footnotes list every time the search algorithm is run on the content, thanks to @inoruhana bug report.
+ *
+ * @since 2.5.7
+ *
+ * @reporter @inoruhana
+ * @link https://wordpress.org/support/topic/footnote-duplicated-in-the-widget/
+ *
+ * Under certain circumstances, footnotes were duplicated, because the footnotes list was
+ * not emptied every time before the search algorithm was run. That happened eg when both
+ * the reference container resides in the widget area, and the YOAST SEO plugin is active
+ * and calls the hook the_content to generate the Open Graph description, while Footnotes
+ * is set to avoid missing out on the footnotes (in the content) by hooking in as soon as
+ * the_content is called, whereas at post end Footnotes seems to hook in the_content only
+ * the time it’s the blog engine processing the post for display and appending the refs.
+ */
+ self::$a_arr_footnotes = array();
+
+ // phpcs:disable WordPress.PHP.YodaConditions.NotYoda
+ // Appends the reference container if set to "post_end".
+ return $this->exec( $p_str_content, 'post_end' === MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION ) );
+ // phpcs:enable WordPress.PHP.YodaConditions.NotYoda
}
/**
* Replaces footnotes in the excerpt of the current page/post.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Page/Post content.
+ * @param string $p_str_content Page/Post content.
* @return string Content with replaced footnotes.
*/
- public function the_excerpt($p_str_Content) {
- return $this->exec($p_str_Content, false, !MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_IN_EXCERPT)));
+ public function the_excerpt( $p_str_content ) {
+ return $this->exec( $p_str_content, false, ! MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_IN_EXCERPT ) ) );
}
/**
* Replaces footnotes in the widget title.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Widget content.
+ * @param string $p_str_content Widget content.
* @return string Content with replaced footnotes.
*/
- public function widget_title($p_str_Content) {
- // appends the reference container if set to "post_end"
- return $this->exec($p_str_Content, false);
+ public function widget_title( $p_str_content ) {
+ // Appends the reference container if set to "post_end".
+ return $this->exec( $p_str_content, false );
}
/**
* Replaces footnotes in the content of the current widget.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Widget content.
+ * @param string $p_str_content Widget content.
* @return string Content with replaced footnotes.
*/
- public function widget_text($p_str_Content) {
- // appends the reference container if set to "post_end"
- return $this->exec($p_str_Content, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION) == "post_end" ? true : false);
+ public function widget_text( $p_str_content ) {
+ // phpcs:disable WordPress.PHP.YodaConditions.NotYoda
+ // Appends the reference container if set to "post_end".
+ return $this->exec( $p_str_content, 'post_end' === MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION ) ? true : false );
+ // phpcs:enable WordPress.PHP.YodaConditions.NotYoda
}
/**
* Replaces footnotes in each Content var of the current Post object.
*
- * @author Stefan Herndler
* @since 1.5.4
- * @param array|WP_Post $p_mixed_Posts
+ * @param array|WP_Post $p_mixed_posts The current Post object.
*/
- public function the_post(&$p_mixed_Posts) {
- // single WP_Post object received
- if (!is_array($p_mixed_Posts)) {
- $p_mixed_Posts = $this->replacePostObject($p_mixed_Posts);
+ public function the_post( &$p_mixed_posts ) {
+ // Single WP_Post object received.
+ if ( ! is_array( $p_mixed_posts ) ) {
+ $p_mixed_posts = $this->replace_post_object( $p_mixed_posts );
return;
}
- // array of WP_Post objects received
- for($l_int_Index = 0; $l_int_Index < count($p_mixed_Posts); $l_int_Index++) {
- $p_mixed_Posts[$l_int_Index] = $this->replacePostObject($p_mixed_Posts[$l_int_Index]);
+ $num_posts = count( $p_mixed_posts );
+ // Array of WP_Post objects received.
+ for ( $l_int_index = 0; $l_int_index < $num_posts; $l_int_index++ ) {
+ $p_mixed_posts[ $l_int_index ] = $this->replace_post_object( $p_mixed_posts[ $l_int_index ] );
}
}
/**
* Replace all Footnotes in a WP_Post object.
*
- * @author Stefan Herndler
* @since 1.5.6
- * @param WP_Post $p_obj_Post
+ * @param WP_Post $p_obj_post The Post object.
* @return WP_Post
*/
- private function replacePostObject($p_obj_Post) {
- //MCI_Footnotes_Convert::debug($p_obj_Post);
- $p_obj_Post->post_content = $this->exec($p_obj_Post->post_content);
- $p_obj_Post->post_content_filtered = $this->exec($p_obj_Post->post_content_filtered);
- $p_obj_Post->post_excerpt = $this->exec($p_obj_Post->post_excerpt);
- return $p_obj_Post;
+ private function replace_post_object( $p_obj_post ) {
+ $p_obj_post->post_content = $this->exec( $p_obj_post->post_content );
+ $p_obj_post->post_content_filtered = $this->exec( $p_obj_post->post_content_filtered );
+ $p_obj_post->post_excerpt = $this->exec( $p_obj_post->post_excerpt );
+ return $p_obj_post;
}
/**
* Replaces all footnotes that occur in the given content.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Any string that may contain footnotes to be replaced.
- * @param bool $p_bool_OutputReferences Appends the Reference Container to the output if set to true, default true.
- * @param bool $p_bool_HideFootnotesText Hide footnotes found in the string.
+ * @param string $p_str_content Any string that may contain footnotes to be replaced.
+ * @param bool $p_bool_output_references Appends the Reference Container to the output if set to true, default true.
+ * @param bool $p_bool_hide_footnotes_text Hide footnotes found in the string.
* @return string
*
- *
* @since 2.2.0 Adding: Reference container: support for custom position shortcode, thanks to @hamshe issue report.
* @since 2.2.5 Bugfix: Reference container: delete position shortcode if unused because position may be widget or footer, thanks to @hamshe bug report.
*/
- public function exec($p_str_Content, $p_bool_OutputReferences = false, $p_bool_HideFootnotesText = false) {
+ public function exec( $p_str_content, $p_bool_output_references = false, $p_bool_hide_footnotes_text = false ) {
- // replace all footnotes in the content, settings are converted to html characters
- $p_str_Content = $this->search($p_str_Content, true, $p_bool_HideFootnotesText);
- // replace all footnotes in the content, settings are NOT converted to html characters
- $p_str_Content = $this->search($p_str_Content, false, $p_bool_HideFootnotesText);
+ // Replace all footnotes in the content, settings are converted to html characters.
+ $p_str_content = $this->search( $p_str_content, true, $p_bool_hide_footnotes_text );
+ // Replace all footnotes in the content, settings are NOT converted to html characters.
+ $p_str_content = $this->search( $p_str_content, false, $p_bool_hide_footnotes_text );
/**
- * Reference container customized positioning through shortcode
+ * Reference container customized positioning through shortcode.
*
* - Adding: Reference container: support for custom position shortcode, thanks to @hamshe issue report.
*
@@ -1116,50 +1235,48 @@ class MCI_Footnotes_Task {
*
* @reporter @hamshe
* @link https://wordpress.org/support/topic/reference-container-in-elementor/#post-13784126
- *
*/
- // append the reference container or insert at shortcode:
- $l_str_ReferenceContainerPositionShortcode = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION_SHORTCODE);
- if ( empty( $l_str_ReferenceContainerPositionShortcode ) ) {
- $l_str_ReferenceContainerPositionShortcode = '[[references]]';
+ // Append the reference container or insert at shortcode.
+ $l_str_reference_container_position_shortcode = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION_SHORTCODE );
+ if ( empty( $l_str_reference_container_position_shortcode ) ) {
+ $l_str_reference_container_position_shortcode = '[[references]]';
}
- if ( $p_bool_OutputReferences ) {
+ if ( $p_bool_output_references ) {
- if ( strpos( $p_str_Content, $l_str_ReferenceContainerPositionShortcode ) !== false ) {
+ if ( strpos( $p_str_content, $l_str_reference_container_position_shortcode ) ) {
- $p_str_Content = str_replace( $l_str_ReferenceContainerPositionShortcode, $this->ReferenceContainer(), $p_str_Content );
+ $p_str_content = str_replace( $l_str_reference_container_position_shortcode, $this->reference_container(), $p_str_content );
} else {
- $p_str_Content .= $this->ReferenceContainer();
+ $p_str_content .= $this->reference_container();
}
- // increment the container ID:
- self::$a_int_ReferenceContainerId++;
+ // Increment the container ID.
+ self::$a_int_reference_container_id++;
}
- // delete position shortcode should any remain:
- $p_str_Content = str_replace( $l_str_ReferenceContainerPositionShortcode, '', $p_str_Content );
+ // Delete position shortcode should any remain.
+ $p_str_content = str_replace( $l_str_reference_container_position_shortcode, '', $p_str_content );
- // take a look if the LOVE ME slug should NOT be displayed on this page/post, remove the short code if found
- if (strpos($p_str_Content, MCI_Footnotes_Config::C_STR_NO_LOVE_SLUG) !== false) {
- self::$a_bool_AllowLoveMe = false;
- $p_str_Content = str_replace(MCI_Footnotes_Config::C_STR_NO_LOVE_SLUG, "", $p_str_Content);
+ // Take a look if the LOVE ME slug should NOT be displayed on this page/post, remove the short code if found.
+ if ( strpos( $p_str_content, MCI_Footnotes_Config::C_STR_NO_LOVE_SLUG ) ) {
+ self::$a_bool_allow_love_me = false;
+ $p_str_content = str_replace( MCI_Footnotes_Config::C_STR_NO_LOVE_SLUG, '', $p_str_content );
}
- // return the content with replaced footnotes and optional reference container appended:
- return $p_str_Content;
+ // Return the content with replaced footnotes and optional reference container appended.
+ return $p_str_content;
}
/**
* Replaces all footnotes in the given content and appends them to the static property.
*
- * @author Stefan Herndler
* @since 1.5.0
- * @param string $p_str_Content Content to be searched for footnotes.
- * @param bool $p_bool_ConvertHtmlChars html encode settings, default true.
- * @param bool $p_bool_HideFootnotesText Hide footnotes found in the string.
+ * @param string $p_str_content Content to be searched for footnotes.
+ * @param bool $p_bool_convert_html_chars html encode settings, default true.
+ * @param bool $p_bool_hide_footnotes_text Hide footnotes found in the string.
* @return string
*
* @since 2.0.0 various.
@@ -1168,37 +1285,37 @@ class MCI_Footnotes_Task {
* @since 2.5.0 Bugfix: Footnote delimiters: Syntax validation: complete message with hint about setting, thanks to @andreasra bug report.
* @since 2.5.0 Bugfix: Footnote delimiters: Syntax validation: limit length of quoted string to 300 characters, thanks to @andreasra bug report.
*/
- public function search($p_str_Content, $p_bool_ConvertHtmlChars, $p_bool_HideFootnotesText) {
+ public function search( $p_str_content, $p_bool_convert_html_chars, $p_bool_hide_footnotes_text ) {
- // post ID to make everything unique wrt infinite scroll and archive view
- self::$a_int_PostId = get_the_id();
+ // Post ID to make everything unique wrt infinite scroll and archive view.
+ self::$a_int_post_id = get_the_id();
- // contains the index for the next footnote on this page
- $l_int_FootnoteIndex = count(self::$a_arr_Footnotes) + 1;
+ // Contains the index for the next footnote on this page.
+ $l_int_footnote_index = count( self::$a_arr_footnotes ) + 1;
- // contains the starting position for the lookup of a footnote
- $l_int_PosStart = 0;
+ // Contains the starting position for the lookup of a footnote.
+ $l_int_pos_start = 0;
- // get start and end tag for the footnotes short code
- $l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START);
- $l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END);
- if ($l_str_StartingTag == "userdefined" || $l_str_EndingTag == "userdefined") {
- $l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED);
- $l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED);
+ // Get start and end tag for the footnotes short code.
+ $l_str_starting_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START );
+ $l_str_ending_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END );
+ if ( 'userdefined' === $l_str_starting_tag || 'userdefined' === $l_str_ending_tag ) {
+ $l_str_starting_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED );
+ $l_str_ending_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED );
}
- // decode html special chars
- if ($p_bool_ConvertHtmlChars) {
- $l_str_StartingTag = htmlspecialchars($l_str_StartingTag);
- $l_str_EndingTag = htmlspecialchars($l_str_EndingTag);
+ // Decode html special chars.
+ if ( $p_bool_convert_html_chars ) {
+ $l_str_starting_tag = htmlspecialchars( $l_str_starting_tag );
+ $l_str_ending_tag = htmlspecialchars( $l_str_ending_tag );
}
- // if footnotes short code is empty, return the content without changes
- if (empty($l_str_StartingTag) || empty($l_str_EndingTag)) {
- return $p_str_Content;
+ // If footnotes short code is empty, return the content without changes.
+ if ( empty( $l_str_starting_tag ) || empty( $l_str_ending_tag ) ) {
+ return $p_str_content;
}
/**
- * Footnote delimiter syntax validation
+ * Footnote delimiter syntax validation.
*
* - Adding: Footnote delimiters: syntax validation for balanced footnote start and end tag short codes.
*
@@ -1219,74 +1336,74 @@ class MCI_Footnotes_Task {
* If footnotes short codes are unbalanced, and syntax validation is not disabled,
* prepend a warning to the content; displays de facto beneath the post title.
*/
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE))) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE ) ) ) {
- // make shortcodes conform to regex syntax:
- $l_str_StartTagRegex = preg_replace( '#([\(\)\{\}\[\]\*\.\?\!])#', '\\\\$1', $l_str_StartingTag );
- $l_str_EndTagRegex = preg_replace( '#([\(\)\{\}\[\]\*\.\?\!])#', '\\\\$1', $l_str_EndingTag );
+ // Make shortcodes conform to regex syntax.
+ $l_str_start_tag_regex = preg_replace( '#([\(\)\{\}\[\]\*\.\?\!])#', '\\\\$1', $l_str_starting_tag );
+ $l_str_end_tag_regex = preg_replace( '#([\(\)\{\}\[\]\*\.\?\!])#', '\\\\$1', $l_str_ending_tag );
- // apply different regex depending on whether start shortcode is double/triple opening parenthesis:
- if ( $l_str_StartingTag == '((' || $l_str_StartingTag == '(((' ) {
+ // Apply different regex depending on whether start shortcode is double/triple opening parenthesis.
+ if ( '((' === $l_str_starting_tag || '(((' === $l_str_starting_tag ) {
- // this prevents from catching a script containing e.g. a double opening parenthesis:
- $l_str_ValidationRegex = '#' . $l_str_StartTagRegex . '(((?!' . $l_str_EndTagRegex . ')[^\{\}])*?)(' . $l_str_StartTagRegex . '|$)#s';
+ // This prevents from catching a script containing e.g. a double opening parenthesis.
+ $l_str_validation_regex = '#' . $l_str_start_tag_regex . '(((?!' . $l_str_end_tag_regex . ')[^\{\}])*?)(' . $l_str_start_tag_regex . '|$)#s';
} else {
- // catch all only if the start shortcode is not double/triple opening parenthesis, i.e. is unlikely to occur in scripts:
- $l_str_ValidationRegex = '#' . $l_str_StartTagRegex . '(((?!' . $l_str_EndTagRegex . ').)*?)(' . $l_str_StartTagRegex . '|$)#s';
+ // Catch all only if the start shortcode is not double/triple opening parenthesis, i.e. is unlikely to occur in scripts.
+ $l_str_validation_regex = '#' . $l_str_start_tag_regex . '(((?!' . $l_str_end_tag_regex . ').)*?)(' . $l_str_start_tag_regex . '|$)#s';
}
- // check syntax and get error locations:
- preg_match( $l_str_ValidationRegex, $p_str_Content, $p_arr_ErrorLocation );
- if ( empty( $p_arr_ErrorLocation ) ) {
- self::$a_bool_SyntaxErrorFlag = false;
+ // Check syntax and get error locations.
+ preg_match( $l_str_validation_regex, $p_str_content, $p_arr_error_location );
+ if ( empty( $p_arr_error_location ) ) {
+ self::$a_bool_syntax_error_flag = false;
}
- // prevent generating and inserting the warning multiple times:
- if ( self::$a_bool_SyntaxErrorFlag ) {
+ // Prevent generating and inserting the warning multiple times.
+ if ( self::$a_bool_syntax_error_flag ) {
- // get plain text string for error location:
- $l_str_ErrorSpotString = strip_tags( $p_arr_ErrorLocation[1] );
+ // Get plain text string for error location.
+ $l_str_error_spot_string = wp_strip_all_tags( $p_arr_error_location[1] );
- // limit string length to 300 characters:
- if ( strlen( $l_str_ErrorSpotString ) > 300 ) {
- $l_str_ErrorSpotString = substr( $l_str_ErrorSpotString, 0, 299 ) . '…';
+ // Limit string length to 300 characters.
+ if ( strlen( $l_str_error_spot_string ) > 300 ) {
+ $l_str_error_spot_string = substr( $l_str_error_spot_string, 0, 299 ) . '…';
}
- // compose warning box:
- $l_str_SyntaxErrorWarning = '';
- // prepend the warning box to the content:
- $p_str_Content = $l_str_SyntaxErrorWarning . $p_str_Content;
+ // Prepend the warning box to the content.
+ $p_str_content = $l_str_syntax_error_warning . $p_str_content;
- // checked, set flag to false to prevent duplicate warning:
- self::$a_bool_SyntaxErrorFlag = false;
+ // Checked, set flag to false to prevent duplicate warning.
+ self::$a_bool_syntax_error_flag = false;
- return $p_str_Content;
+ return $p_str_content;
}
}
+ // Load referrer templates if footnotes text not hidden.
+ if ( ! $p_bool_hide_footnotes_text ) {
- // load referrer templates if footnotes text not hidden:
- if (!$p_bool_HideFootnotesText) {
-
- // load footnote referrer template file:
- if (self::$a_bool_AlternativeTooltipsEnabled) {
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote-alternative");
+ // Load footnote referrer template file.
+ if ( self::$a_bool_alternative_tooltips_enabled ) {
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'footnote-alternative' );
} else {
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote");
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'footnote' );
}
/**
@@ -1295,56 +1412,57 @@ class MCI_Footnotes_Task {
* - Bugfix: Tooltips: fix display in Popup Maker popups by correcting a coding error.
*
* @since 2.5.4
- * @see self::add_filter('pum_popup_content', array($this, "the_content"), $l_int_TheContentPriority)
+ * @see self::add_filter('pum_popup_content', array($this, "the_content"), $l_int_the_content_priority)
*/
- self::$a_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED));
- self::$a_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE));
+ self::$a_bool_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ENABLED ) );
+ self::$a_bool_alternative_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE ) );
- // load tooltip inline script if jQuery tooltips are enabled:
- if (self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled) {
- $l_obj_TemplateTooltip = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "tooltip");
+ // Load tooltip inline script if jQuery tooltips are enabled.
+ if ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) {
+ $l_obj_template_tooltip = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'tooltip' );
}
-
} else {
- $l_obj_Template = null;
- $l_obj_TemplateTooltip = null;
+ $l_obj_template = null;
+ $l_obj_template_tooltip = null;
}
- // search footnotes short codes in the content
+ // Search footnotes short codes in the content.
do {
- // get first occurrence of the footnote start tag short code:
- $i_int_LenContent = strlen($p_str_Content);
- if ($l_int_PosStart > $i_int_LenContent) $l_int_PosStart = $i_int_LenContent;
- $l_int_PosStart = strpos($p_str_Content, $l_str_StartingTag, $l_int_PosStart);
- // no short code found, stop here
- if ($l_int_PosStart === false) {
+ // Get first occurrence of the footnote start tag short code.
+ $i_int_len_content = strlen( $p_str_content );
+ if ( $l_int_pos_start > $i_int_len_content ) {
+ $l_int_pos_start = $i_int_len_content;
+ }
+ $l_int_pos_start = strpos( $p_str_content, $l_str_starting_tag, $l_int_pos_start );
+ // No short code found, stop here.
+ if ( ! $l_int_pos_start ) {
break;
}
- // get first occurrence of the footnote end tag short code:
- $l_int_PosEnd = strpos($p_str_Content, $l_str_EndingTag, $l_int_PosStart);
- // no short code found, stop here
- if ($l_int_PosEnd === false) {
+ // Get first occurrence of the footnote end tag short code.
+ $l_int_pos_end = strpos( $p_str_content, $l_str_ending_tag, $l_int_pos_start );
+ // No short code found, stop here.
+ if ( ! $l_int_pos_end ) {
break;
}
- // calculate the length of the footnote
- $l_int_Length = $l_int_PosEnd - $l_int_PosStart;
+ // Calculate the length of the footnote.
+ $l_int_length = $l_int_pos_end - $l_int_pos_start;
- // get footnote text
- $l_str_FootnoteText = substr($p_str_Content, $l_int_PosStart + strlen($l_str_StartingTag), $l_int_Length - strlen($l_str_StartingTag));
+ // Get footnote text.
+ $l_str_footnote_text = substr( $p_str_content, $l_int_pos_start + strlen( $l_str_starting_tag ), $l_int_length - strlen( $l_str_starting_tag ) );
- // get tooltip text if present:
- self::$a_str_TooltipShortcode = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_DELIMITER);
- self::$a_int_TooltipShortcodeLength = strlen( self::$a_str_TooltipShortcode );
- $l_int_TooltipTextLength = strpos( $l_str_FootnoteText, self::$a_str_TooltipShortcode );
- $l_bool_HasTooltipText = $l_int_TooltipTextLength === false ? false : true;
- if ( $l_bool_HasTooltipText ) {
- $l_str_TooltipText = substr( $l_str_FootnoteText, 0, $l_int_TooltipTextLength );
+ // Get tooltip text if present.
+ self::$a_str_tooltip_shortcode = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_EXCERPT_DELIMITER );
+ self::$a_int_tooltip_shortcode_length = strlen( self::$a_str_tooltip_shortcode );
+ $l_int_tooltip_text_length = strpos( $l_str_footnote_text, self::$a_str_tooltip_shortcode );
+ $l_bool_has_tooltip_text = ! $l_int_tooltip_text_length ? false : true;
+ if ( $l_bool_has_tooltip_text ) {
+ $l_str_tooltip_text = substr( $l_str_footnote_text, 0, $l_int_tooltip_text_length );
} else {
- $l_str_TooltipText = '';
+ $l_str_tooltip_text = '';
}
/**
- * URL line wrapping for Unicode non conformant browsers
+ * URL line wrapping for Unicode non conformant browsers.
*
* @since 2.1.1 (CSS)
* @since 2.1.4 (PHP)
@@ -1437,7 +1555,6 @@ class MCI_Footnotes_Task {
* @reporter @bernardzit
* @link https://wordpress.org/support/topic/footnotes-dont-show-after-update-to-2-2-6/#post-13826029
*
- *
* @since 2.2.8 Bugfix: Reference container, tooltips: URL wrap: correctly make the quotation mark optional wrt query parameters, thanks to @spiralofhope2 bug report.
* @date 2020-12-23T1107+0100
*
@@ -1478,48 +1595,48 @@ class MCI_Footnotes_Task {
* Note: The WordPress blog engine edits these values, cropping these leading/trailing spaces.
* But given they can occur on WP-powered websites, some page builders may probably not.
*/
- if ( MCI_Footnotes_Convert::toBool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_BOOL_FOOTNOTE_URL_WRAP_ENABLED ) ) ) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTE_URL_WRAP_ENABLED ) ) ) {
- $l_str_FootnoteText = preg_replace(
+ $l_str_footnote_text = preg_replace(
'#(?$1',
- $l_str_FootnoteText
+ $l_str_footnote_text
);
}
- // Text to be displayed instead of the footnote
- $l_str_FootnoteReplaceText = "";
+ // Text to be displayed instead of the footnote.
+ $l_str_footnote_replace_text = '';
- // whether hard links are enabled:
- if (self::$a_bool_HardLinksEnable) {
+ // Whether hard links are enabled.
+ if ( self::$a_bool_hard_links_enable ) {
- // get the configurable parts:
- self::$a_str_ReferrerLinkSlug = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERRER_FRAGMENT_ID_SLUG);
- self::$a_str_FootnoteLinkSlug = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTE_FRAGMENT_ID_SLUG);
- self::$a_str_LinkIdsSeparator = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_HARD_LINK_IDS_SEPARATOR);
+ // Get the configurable parts.
+ self::$a_str_referrer_link_slug = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERRER_FRAGMENT_ID_SLUG );
+ self::$a_str_footnote_link_slug = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTE_FRAGMENT_ID_SLUG );
+ self::$a_str_link_ids_separator = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_HARD_LINK_IDS_SEPARATOR );
- // streamline ID concatenation:
- self::$a_str_PostContainerIdCompound = self::$a_str_LinkIdsSeparator;
- self::$a_str_PostContainerIdCompound .= self::$a_int_PostId;
- self::$a_str_PostContainerIdCompound .= self::$a_str_LinkIdsSeparator;
- self::$a_str_PostContainerIdCompound .= self::$a_int_ReferenceContainerId;
- self::$a_str_PostContainerIdCompound .= self::$a_str_LinkIdsSeparator;
+ // Streamline ID concatenation.
+ self::$a_str_post_container_id_compound = self::$a_str_link_ids_separator;
+ self::$a_str_post_container_id_compound .= self::$a_int_post_id;
+ self::$a_str_post_container_id_compound .= self::$a_str_link_ids_separator;
+ self::$a_str_post_container_id_compound .= self::$a_int_reference_container_id;
+ self::$a_str_post_container_id_compound .= self::$a_str_link_ids_separator;
}
- // display the footnote referrers and the tooltips:
- if (!$p_bool_HideFootnotesText) {
- $l_int_Index = MCI_Footnotes_Convert::Index($l_int_FootnoteIndex, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE));
+ // Display the footnote referrers and the tooltips.
+ if ( ! $p_bool_hide_footnotes_text ) {
+ $l_int_index = MCI_Footnotes_Convert::index( $l_int_footnote_index, MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE ) );
- // display only a truncated footnote text if option enabled:
- $l_bool_EnableExcerpt = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED));
- $l_int_MaxLength = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH));
+ // Display only a truncated footnote text if option enabled.
+ $l_bool_enable_excerpt = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED ) );
+ $l_int_max_length = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH ) );
- // define excerpt text as footnote text by default:
- $l_str_ExcerptText = $l_str_FootnoteText;
+ // Define excerpt text as footnote text by default.
+ $l_str_excerpt_text = $l_str_footnote_text;
/**
- * Tooltip truncation
+ * Tooltip truncation.
*
* - Adding: Tooltips: Read-on button: Label: configurable instead of localizable, thanks to @rovanov example provision.
*
@@ -1534,34 +1651,34 @@ class MCI_Footnotes_Task {
* This is equivalent to the WordPress default excerpt generation, i.e. without a
* custom excerpt and without a delimiter. But WordPress does word count, usually 55.
*/
- if (self::$a_bool_TooltipsEnabled && $l_bool_EnableExcerpt) {
- $l_str_DummyText = strip_tags($l_str_FootnoteText);
- if (is_int($l_int_MaxLength) && strlen($l_str_DummyText) > $l_int_MaxLength) {
- $l_str_ExcerptText = substr($l_str_DummyText, 0, $l_int_MaxLength);
- $l_str_ExcerptText = substr($l_str_ExcerptText, 0, strrpos($l_str_ExcerptText, ' '));
- $l_str_ExcerptText .= ' … <';
- $l_str_ExcerptText .= self::$a_bool_HardLinksEnable ? 'a' : 'span';
- $l_str_ExcerptText .= ' class="footnote_tooltip_continue" ';
- $l_str_ExcerptText .= 'onclick="footnote_moveToAnchor_' . self::$a_int_PostId;
- $l_str_ExcerptText .= '_' . self::$a_int_ReferenceContainerId;
- $l_str_ExcerptText .= '(\'footnote_plugin_reference_' . self::$a_int_PostId;
- $l_str_ExcerptText .= '_' . self::$a_int_ReferenceContainerId;
- $l_str_ExcerptText .= "_$l_int_Index');\"";
+ if ( self::$a_bool_tooltips_enabled && $l_bool_enable_excerpt ) {
+ $l_str_dummy_text = wp_strip_all_tags( $l_str_footnote_text );
+ if ( is_int( $l_int_max_length ) && strlen( $l_str_dummy_text ) > $l_int_max_length ) {
+ $l_str_excerpt_text = substr( $l_str_dummy_text, 0, $l_int_max_length );
+ $l_str_excerpt_text = substr( $l_str_excerpt_text, 0, strrpos( $l_str_excerpt_text, ' ' ) );
+ $l_str_excerpt_text .= ' … <';
+ $l_str_excerpt_text .= self::$a_bool_hard_links_enable ? 'a' : 'span';
+ $l_str_excerpt_text .= ' class="footnote_tooltip_continue" ';
+ $l_str_excerpt_text .= 'onclick="footnote_move_to_anchor_' . self::$a_int_post_id;
+ $l_str_excerpt_text .= '_' . self::$a_int_reference_container_id;
+ $l_str_excerpt_text .= '(\'footnote_plugin_reference_' . self::$a_int_post_id;
+ $l_str_excerpt_text .= '_' . self::$a_int_reference_container_id;
+ $l_str_excerpt_text .= "_$l_int_index');\"";
- // if enabled, add the hard link fragment ID:
- if (self::$a_bool_HardLinksEnable) {
+ // If enabled, add the hard link fragment ID.
+ if ( self::$a_bool_hard_links_enable ) {
- $l_str_ExcerptText .= ' href="#';
- $l_str_ExcerptText .= self::$a_str_FootnoteLinkSlug;
- $l_str_ExcerptText .= self::$a_str_PostContainerIdCompound;
- $l_str_ExcerptText .= $l_int_Index;
- $l_str_ExcerptText .= '"';
+ $l_str_excerpt_text .= ' href="#';
+ $l_str_excerpt_text .= self::$a_str_footnote_link_slug;
+ $l_str_excerpt_text .= self::$a_str_post_container_id_compound;
+ $l_str_excerpt_text .= $l_int_index;
+ $l_str_excerpt_text .= '"';
}
- $l_str_ExcerptText .= '>';
+ $l_str_excerpt_text .= '>';
/**
- * Configurable read-on button label
+ * Configurable read-on button label.
*
* - Adding: Tooltips: Read-on button: Label: configurable instead of localizable, thanks to @rovanov example provision.
*
@@ -1571,55 +1688,56 @@ class MCI_Footnotes_Task {
* @reporter @rovanov
* @link https://wordpress.org/support/topic/offset-x-axis-and-offset-y-axis-does-not-working/
*/
- $l_str_ExcerptText .= MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL);
+ $l_str_excerpt_text .= MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL );
- $l_str_ExcerptText .= self::$a_bool_HardLinksEnable ? '' : '';
+ $l_str_excerpt_text .= self::$a_bool_hard_links_enable ? '' : '';
}
}
/**
- * Referrers element superscript or baseline
+ * Referrers element superscript or baseline.
*
* Referrers: new setting for vertical align: superscript (default) or baseline (optional), thanks to @cwbayer bug report
+ *
* @since 2.1.1
*
* @reporter @cwbayer
* @link https://wordpress.org/support/topic/footnote-number-in-text-superscript-disrupts-leading/
*
- * define the HTML element to use for the referrers:
+ * define the HTML element to use for the referrers.
*/
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS))) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS ) ) ) {
- $l_str_SupSpan = 'sup';
+ $l_str_sup_span = 'sup';
} else {
- $l_str_SupSpan = 'span';
+ $l_str_sup_span = 'span';
}
- // whether hard links are enabled:
- if (self::$a_bool_HardLinksEnable) {
+ // Whether hard links are enabled.
+ if ( self::$a_bool_hard_links_enable ) {
- self::$a_str_LinkSpan = 'a';
- self::$a_str_LinkCloseTag = '';
- // self::$a_str_LinkOpenTag will be defined as needed
+ self::$a_str_link_span = 'a';
+ self::$a_str_link_close_tag = '';
+ // Self::$a_str_link_open_tag will be defined as needed.
- // compose hyperlink address (leading space is in template):
- $l_str_FootnoteLinkArgument = 'href="#';
- $l_str_FootnoteLinkArgument .= self::$a_str_FootnoteLinkSlug;
- $l_str_FootnoteLinkArgument .= self::$a_str_PostContainerIdCompound;
- $l_str_FootnoteLinkArgument .= $l_int_Index;
- $l_str_FootnoteLinkArgument .= '" class="footnote_hard_link"';
+ // Compose hyperlink address (leading space is in template).
+ $l_str_footnote_link_argument = 'href="#';
+ $l_str_footnote_link_argument .= self::$a_str_footnote_link_slug;
+ $l_str_footnote_link_argument .= self::$a_str_post_container_id_compound;
+ $l_str_footnote_link_argument .= $l_int_index;
+ $l_str_footnote_link_argument .= '" class="footnote_hard_link"';
/**
* Compose fragment ID anchor with offset, for use in reference container.
* Empty span, child of empty span, to avoid tall dotted rectangles in browser.
*/
- $l_str_ReferrerAnchorElement = '';
+ $l_str_referrer_anchor_element = '';
} else {
@@ -1636,101 +1754,101 @@ class MCI_Footnotes_Task {
*
* If no hyperlink nor offset anchor is needed, initialize as empty.
*/
- $l_str_FootnoteLinkArgument = '';
- $l_str_ReferrerAnchorElement = '';
+ $l_str_footnote_link_argument = '';
+ $l_str_referrer_anchor_element = '';
- // The link element is set independently as it may be needed for styling:
- if ( MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_LINK_ELEMENT_ENABLED)) ) {
+ // The link element is set independently as it may be needed for styling.
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_LINK_ELEMENT_ENABLED ) ) ) {
- self::$a_str_LinkSpan = 'a';
- self::$a_str_LinkOpenTag = '';
- self::$a_str_LinkCloseTag = '';
+ self::$a_str_link_span = 'a';
+ self::$a_str_link_open_tag = '';
+ self::$a_str_link_close_tag = '';
}
}
- // determine tooltip content:
- if ( self::$a_bool_TooltipsEnabled ) {
- $l_str_TooltipContent = $l_bool_HasTooltipText ? $l_str_TooltipText : $l_str_ExcerptText;
+ // Determine tooltip content.
+ if ( self::$a_bool_tooltips_enabled ) {
+ $l_str_tooltip_content = $l_bool_has_tooltip_text ? $l_str_tooltip_text : $l_str_excerpt_text;
} else {
- $l_str_TooltipContent = '';
+ $l_str_tooltip_content = '';
}
-
+
/**
* Determine shrink width if alternative tooltips are enabled.
- *
+ *
* @since 2.5.6
*/
- $l_str_TooltipStyle = '';
- if ( self::$a_bool_AlternativeTooltipsEnabled && self::$a_bool_TooltipsEnabled ) {
- $l_int_TooltipLength = strlen( strip_tags( $l_str_TooltipContent ) );
- if ( $l_int_TooltipLength < 70 ) {
- $l_str_TooltipStyle = ' style="width: ';
- $l_str_TooltipStyle .= ( $l_int_TooltipLength * .7 );
- $l_str_TooltipStyle .= 'em;"';
+ $l_str_tooltip_style = '';
+ if ( self::$a_bool_alternative_tooltips_enabled && self::$a_bool_tooltips_enabled ) {
+ $l_int_tooltip_length = strlen( wp_strip_all_tags( $l_str_tooltip_content ) );
+ if ( $l_int_tooltip_length < 70 ) {
+ $l_str_tooltip_style = ' style="width: ';
+ $l_str_tooltip_style .= ( $l_int_tooltip_length * .7 );
+ $l_str_tooltip_style .= 'em;"';
}
}
- // fill in 'templates/public/footnote.html':
- $l_obj_Template->replace(
+ // Fill in 'templates/public/footnote.html'.
+ $l_obj_template->replace(
array(
- "link-span" => self::$a_str_LinkSpan,
- "post_id" => self::$a_int_PostId,
- "container_id" => self::$a_int_ReferenceContainerId,
- "note_id" => $l_int_Index,
- "hard-link" => $l_str_FootnoteLinkArgument,
- "sup-span" => $l_str_SupSpan,
- "before" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_BEFORE),
- "index" => $l_int_Index,
- "after" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER),
- "anchor-element" => $l_str_ReferrerAnchorElement,
- "style" => $l_str_TooltipStyle,
- "text" => $l_str_TooltipContent,
+ 'link-span' => self::$a_str_link_span,
+ 'post_id' => self::$a_int_post_id,
+ 'container_id' => self::$a_int_reference_container_id,
+ 'note_id' => $l_int_index,
+ 'hard-link' => $l_str_footnote_link_argument,
+ 'sup-span' => $l_str_sup_span,
+ 'before' => MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_BEFORE ),
+ 'index' => $l_int_index,
+ 'after' => MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER ),
+ 'anchor-element' => $l_str_referrer_anchor_element,
+ 'style' => $l_str_tooltip_style,
+ 'text' => $l_str_tooltip_content,
)
);
- $l_str_FootnoteReplaceText = $l_obj_Template->getContent();
+ $l_str_footnote_replace_text = $l_obj_template->get_content();
- // reset the template
- $l_obj_Template->reload();
+ // Reset the template.
+ $l_obj_template->reload();
- // if standard tooltips are enabled but alternative are not:
- if (self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled) {
+ // If standard tooltips are enabled but alternative are not.
+ if ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) {
- $l_int_OffsetY = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y));
- $l_int_OffsetX = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X));
- $l_int_FadeInDelay = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY ));
- $l_int_FadeInDuration = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION ));
- $l_int_FadeOutDelay = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY ));
- $l_int_FadeOutDuration = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION));
+ $l_int_offset_y = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y ) );
+ $l_int_offset_x = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X ) );
+ $l_int_fade_in_delay = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY ) );
+ $l_int_fade_in_duration = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION ) );
+ $l_int_fade_out_delay = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY ) );
+ $l_int_fade_out_duration = intval( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION ) );
- // fill in 'templates/public/tooltip.html':
- $l_obj_TemplateTooltip->replace(
+ // Fill in 'templates/public/tooltip.html'.
+ $l_obj_template_tooltip->replace(
array(
- "post_id" => self::$a_int_PostId,
- "container_id" => self::$a_int_ReferenceContainerId,
- "note_id" => $l_int_Index,
- "position" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION),
- "offset-y" => !empty($l_int_OffsetY) ? $l_int_OffsetY : 0,
- "offset-x" => !empty($l_int_OffsetX) ? $l_int_OffsetX : 0,
- "fade-in-delay" => !empty($l_int_FadeInDelay ) ? $l_int_FadeInDelay : 0,
- "fade-in-duration" => !empty($l_int_FadeInDuration ) ? $l_int_FadeInDuration : 0,
- "fade-out-delay" => !empty($l_int_FadeOutDelay ) ? $l_int_FadeOutDelay : 0,
- "fade-out-duration" => !empty($l_int_FadeOutDuration) ? $l_int_FadeOutDuration : 0,
+ 'post_id' => self::$a_int_post_id,
+ 'container_id' => self::$a_int_reference_container_id,
+ 'note_id' => $l_int_index,
+ 'position' => MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION ),
+ 'offset-y' => ! empty( $l_int_offset_y ) ? $l_int_offset_y : 0,
+ 'offset-x' => ! empty( $l_int_offset_x ) ? $l_int_offset_x : 0,
+ 'fade-in-delay' => ! empty( $l_int_fade_in_delay ) ? $l_int_fade_in_delay : 0,
+ 'fade-in-duration' => ! empty( $l_int_fade_in_duration ) ? $l_int_fade_in_duration : 0,
+ 'fade-out-delay' => ! empty( $l_int_fade_out_delay ) ? $l_int_fade_out_delay : 0,
+ 'fade-out-duration' => ! empty( $l_int_fade_out_duration ) ? $l_int_fade_out_duration : 0,
)
);
- $l_str_FootnoteReplaceText .= $l_obj_TemplateTooltip->getContent();
- $l_obj_TemplateTooltip->reload();
+ $l_str_footnote_replace_text .= $l_obj_template_tooltip->get_content();
+ $l_obj_template_tooltip->reload();
}
}
- // replace the footnote with the template
- $p_str_Content = substr_replace($p_str_Content, $l_str_FootnoteReplaceText, $l_int_PosStart, $l_int_Length + strlen($l_str_EndingTag));
+ // Replace the footnote with the template.
+ $p_str_content = substr_replace( $p_str_content, $l_str_footnote_replace_text, $l_int_pos_start, $l_int_length + strlen( $l_str_ending_tag ) );
- // add footnote only if not empty
- if (!empty($l_str_FootnoteText)) {
- // set footnote to the output box at the end
- self::$a_arr_Footnotes[] = $l_str_FootnoteText;
- // increase footnote index
- $l_int_FootnoteIndex++;
+ // Add footnote only if not empty.
+ if ( ! empty( $l_str_footnote_text ) ) {
+ // Set footnote to the output box at the end.
+ self::$a_arr_footnotes[] = $l_str_footnote_text;
+ // Increase footnote index.
+ $l_int_footnote_index++;
}
/**
@@ -1765,19 +1883,18 @@ class MCI_Footnotes_Task {
* footnote, the length of the first footnote and the length of the templates for the
* footnote and the tooltip. Moreover, it was causing non-trivial process garbage.
*/
- // add offset to the new starting position
- $l_int_PosStart += $l_int_Length + strlen($l_str_EndingTag);
+ // Add offset to the new starting position.
+ $l_int_pos_start += $l_int_length + strlen( $l_str_ending_tag );
- } while (true);
+ } while ( true );
- // return content
- return $p_str_Content;
+ // Return content.
+ return $p_str_content;
}
/**
* Generates the reference container.
*
- * @author Stefan Herndler
* @since 1.5.0
* @return string
*
@@ -1788,16 +1905,15 @@ class MCI_Footnotes_Task {
* @since 2.1.1 Bugfix: Referrers, reference container: Combining identical footnotes: fix dead links and ensure referrer-backlink bijectivity, thanks to @happyches bug report.
* @since 2.1.1 Bugfix: Reference container: Backlink symbol: make optional, not suggest configuring it to invisible, thanks to @spaceling feedback.
*/
- public function ReferenceContainer() {
+ public function reference_container() {
- // no footnotes have been replaced on this page:
- if (empty(self::$a_arr_Footnotes)) {
- return "";
+ // No footnotes have been replaced on this page.
+ if ( empty( self::$a_arr_footnotes ) ) {
+ return '';
}
-
/**
- * Footnote index backlink symbol
+ * Footnote index backlink symbol.
*
* - Bugfix: Reference container: Backlink symbol: make optional, not suggest configuring it to invisible, thanks to @spaceling feedback.
*
@@ -1806,37 +1922,36 @@ class MCI_Footnotes_Task {
* @reporter @spaceling
* @link https://wordpress.org/support/topic/change-the-position-5/page/2/#post-13671138
*
- * If the backlink symbol is enabled:
+ * If the backlink symbol is enabled.
*/
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE))) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE ) ) ) {
- // get html arrow
- $l_str_Arrow = MCI_Footnotes_Convert::getArrow(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW));
- // set html arrow to the first one if invalid index defined
- if (is_array($l_str_Arrow)) {
- $l_str_Arrow = MCI_Footnotes_Convert::getArrow(0);
+ // Get html arrow.
+ $l_str_arrow = MCI_Footnotes_Convert::get_arrow( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW ) );
+ // Set html arrow to the first one if invalid index defined.
+ if ( is_array( $l_str_arrow ) ) {
+ $l_str_arrow = MCI_Footnotes_Convert::get_arrow( 0 );
}
- // get user defined arrow
- $l_str_ArrowUserDefined = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW_USER_DEFINED);
- if (!empty($l_str_ArrowUserDefined)) {
- $l_str_Arrow = $l_str_ArrowUserDefined;
+ // Get user defined arrow.
+ $l_str_arrow_user_defined = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW_USER_DEFINED );
+ if ( ! empty( $l_str_arrow_user_defined ) ) {
+ $l_str_arrow = $l_str_arrow_user_defined;
}
- // wrap the arrow in a @media print { display:hidden } span:
- $l_str_FootnoteArrow = '';
+ // Wrap the arrow in a @media print { display:hidden } span.
+ $l_str_footnote_arrow = '';
} else {
- // If the backlink symbol isn’t enabled, set it to empty:
- $l_str_Arrow = '';
- $l_str_FootnoteArrow = '';
+ // If the backlink symbol isn’t enabled, set it to empty.
+ $l_str_arrow = '';
+ $l_str_footnote_arrow = '';
}
-
/**
- * Backlink separator
+ * Backlink separator.
*
* - Bugfix: Reference container: make separating and terminating punctuation optional and configurable, thanks to @docteurfitness issue report and code contribution.
*
@@ -1852,59 +1967,69 @@ class MCI_Footnotes_Task {
* Initially a comma was appended in this algorithm for enumerations.
* The comma in enumerations is not generally preferred.
*/
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_SEPARATOR_ENABLED))) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_ENABLED ) ) ) {
- // check if it is input-configured:
- $l_str_Separator = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_CUSTOM);
+ // Check if it is input-configured.
+ $l_str_separator = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_CUSTOM );
- if (empty($l_str_Separator)) {
+ if ( empty( $l_str_separator ) ) {
- // if it is not, check which option is on:
- $l_str_SeparatorOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_OPTION);
- switch ($l_str_SeparatorOption) {
- case 'comma' : $l_str_Separator = ','; break;
- case 'semicolon': $l_str_Separator = ';'; break;
- case 'en_dash' : $l_str_Separator = ' –'; break;
+ // If it is not, check which option is on.
+ $l_str_separator_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_OPTION );
+ switch ( $l_str_separator_option ) {
+ case 'comma':
+ $l_str_separator = ',';
+ break;
+ case 'semicolon':
+ $l_str_separator = ';';
+ break;
+ case 'en_dash':
+ $l_str_separator = ' –';
+ break;
}
}
-
} else {
- $l_str_Separator = '';
+ $l_str_separator = '';
}
/**
- * Backlink terminator
+ * Backlink terminator.
*
* Initially a dot was appended in the table row template.
+ *
* @since 2.0.6 a dot after footnote numbers is discarded as not localizable;
* making it optional was envisaged.
- * @since 2.1.4 the terminator is optional, has options, and is configurable:
+ * @since 2.1.4 the terminator is optional, has options, and is configurable.
*/
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_TERMINATOR_ENABLED))) {
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_ENABLED ) ) ) {
- // check if it is input-configured:
- $l_str_Terminator = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_CUSTOM);
+ // Check if it is input-configured.
+ $l_str_terminator = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_CUSTOM );
- if (empty($l_str_Terminator)) {
+ if ( empty( $l_str_terminator ) ) {
- // if it is not, check which option is on:
- $l_str_TerminatorOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_OPTION);
- switch ($l_str_TerminatorOption) {
- case 'period' : $l_str_Terminator = '.'; break;
- case 'parenthesis': $l_str_Terminator = ')'; break;
- case 'colon' : $l_str_Terminator = ':'; break;
+ // If it is not, check which option is on.
+ $l_str_terminator_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_OPTION );
+ switch ( $l_str_terminator_option ) {
+ case 'period':
+ $l_str_terminator = '.';
+ break;
+ case 'parenthesis':
+ $l_str_terminator = ')';
+ break;
+ case 'colon':
+ $l_str_terminator = ':';
+ break;
}
}
-
} else {
- $l_str_Terminator = '';
+ $l_str_terminator = '';
}
-
/**
- * Line breaks
+ * Line breaks.
*
* - Bugfix: Reference container: Backlinks: fix stacked enumerations by adding optional line breaks.
*
@@ -1916,18 +2041,19 @@ class MCI_Footnotes_Task {
* Variable number length and proportional character width require explicit line breaks.
* Otherwise, an ordinary space character offering a line break opportunity is inserted.
*/
- $l_str_LineBreak = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_LINE_BREAKS_ENABLED)) ? '
' : ' ';
+ $l_str_line_break = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_BACKLINKS_LINE_BREAKS_ENABLED ) ) ? '
' : ' ';
/**
+ * Line breaks for source readability.
+ *
* For maintenance and support, table rows in the reference container should be
* separated by an empty line. So we add these line breaks for source readability.
- * Before the first table row (breaks between rows are ~200 lines below):
+ * Before the first table row (breaks between rows are ~200 lines below).
*/
- $l_str_Body = "\r\n\r\n";
-
+ $l_str_body = "\r\n\r\n";
/**
- * Reference container table row template load
+ * Reference container table row template load.
*
* - Bugfix: Reference container: option to restore pre-2.0.0 layout with the backlink symbol in an extra column.
*
@@ -1935,34 +2061,34 @@ class MCI_Footnotes_Task {
* @date 2020-11-16T2024+0100
*/
- // when combining identical footnotes is turned on, another template is needed:
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES))) {
- // the combining template allows for backlink clusters and supports cell clicking for single notes:
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container-body-combi");
+ // When combining identical footnotes is turned on, another template is needed.
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_COMBINE_IDENTICAL_FOOTNOTES ) ) ) {
+ // The combining template allows for backlink clusters and supports cell clicking for single notes.
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'reference-container-body-combi' );
} else {
- // when 3-column layout is turned on (only available if combining is turned off):
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE))) {
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container-body-3column");
+ // When 3-column layout is turned on (only available if combining is turned off).
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE ) ) ) {
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'reference-container-body-3column' );
} else {
- // when switch symbol and index is turned on, and combining and 3-columns are off:
- if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH))) {
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container-body-switch");
+ // When switch symbol and index is turned on, and combining and 3-columns are off.
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH ) ) ) {
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'reference-container-body-switch' );
} else {
- // default is the standard template:
- $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container-body");
+ // Default is the standard template.
+ $l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_PUBLIC, 'reference-container-body' );
}
}
}
/**
- * Switch backlink symbol and footnote number
+ * Switch backlink symbol and footnote number.
*
* - Bugfix: Reference container: option to append symbol (prepended by default), thanks to @spaceling code contribution.
*
@@ -1978,36 +2104,37 @@ class MCI_Footnotes_Task {
* @since 2.1.4
* @date 2020-11-26T1633+0100
*/
- $l_bool_SymbolSwitch = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH));
+ $l_bool_symbol_switch = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH ) );
- // loop through all footnotes found in the page
- for ($l_int_Index = 0; $l_int_Index < count(self::$a_arr_Footnotes); $l_int_Index++) {
+ // Loop through all footnotes found in the page.
+ $num_footnotes = count( self::$a_arr_footnotes );
+ for ( $l_int_index = 0; $l_int_index < $num_footnotes; $l_int_index++ ) {
- // get footnote text
- $l_str_FootnoteText = self::$a_arr_Footnotes[$l_int_Index];
+ // Get footnote text.
+ $l_str_footnote_text = self::$a_arr_footnotes[ $l_int_index ];
- // if footnote is empty, go to the next one;
- // With combine identicals turned on, identicals will be deleted and are skipped:
- if (empty($l_str_FootnoteText)) {
+ // If footnote is empty, go to the next one;.
+ // With combine identicals turned on, identicals will be deleted and are skipped.
+ if ( empty( $l_str_footnote_text ) ) {
continue;
}
- // generate content of footnote index cell
- $l_int_FirstFootnoteIndex = ($l_int_Index + 1);
+ // Generate content of footnote index cell.
+ $l_int_first_footnote_index = ( $l_int_index + 1 );
- // get the footnote index string and
- // keep supporting legacy index placeholder:
- $l_str_FootnoteId = MCI_Footnotes_Convert::Index(($l_int_Index + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE));
+ // Get the footnote index string and.
+ // Keep supporting legacy index placeholder.
+ $l_str_footnote_id = MCI_Footnotes_Convert::index( ( $l_int_index + 1 ), MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE ) );
/**
- * Case of only one backlink per table row
+ * Case of only one backlink per table row.
*
- * If enabled, and for the case the footnote is single, compose hard link:
+ * If enabled, and for the case the footnote is single, compose hard link.
*/
- // define anyway:
- $l_str_HardLinkAddress = '';
+ // Define anyway.
+ $l_str_hard_link_address = '';
- if (self::$a_bool_HardLinksEnable) {
+ if ( self::$a_bool_hard_links_enable ) {
/**
* Use-Backbutton-Hint tooltip, optional and configurable.
@@ -2023,43 +2150,42 @@ class MCI_Footnotes_Task {
* This tooltip hints to use the backbutton instead, so the history gets streamlined again.
* @link https://wordpress.org/support/topic/making-it-amp-compatible/#post-13837359
*/
- if ( MCI_Footnotes_Convert::toBool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_BACKLINK_TOOLTIP_ENABLE ) ) ) {
- $l_str_UseBackbuttonHint = ' title="';
- $l_str_UseBackbuttonHint .= MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_TEXT);
- $l_str_UseBackbuttonHint .= '"';
+ if ( MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_ENABLE ) ) ) {
+ $l_str_use_backbutton_hint = ' title="';
+ $l_str_use_backbutton_hint .= MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_BACKLINK_TOOLTIP_TEXT );
+ $l_str_use_backbutton_hint .= '"';
} else {
- $l_str_UseBackbuttonHint = '';
+ $l_str_use_backbutton_hint = '';
}
/**
* Compose fragment ID anchor with offset, for use in reference container.
* Empty span, child of empty span, to avoid tall dotted rectangles in browser.
*/
- $l_str_FootnoteAnchorElement = '';
+ $l_str_footnote_anchor_element = '';
- // compose optional hard link address:
- $l_str_HardLinkAddress = ' href="#';
- $l_str_HardLinkAddress .= self::$a_str_ReferrerLinkSlug;
- $l_str_HardLinkAddress .= self::$a_str_PostContainerIdCompound;
- $l_str_HardLinkAddress .= $l_str_FootnoteId . '"';
- $l_str_HardLinkAddress .= $l_str_UseBackbuttonHint;
+ // Compose optional hard link address.
+ $l_str_hard_link_address = ' href="#';
+ $l_str_hard_link_address .= self::$a_str_referrer_link_slug;
+ $l_str_hard_link_address .= self::$a_str_post_container_id_compound;
+ $l_str_hard_link_address .= $l_str_footnote_id . '"';
+ $l_str_hard_link_address .= $l_str_use_backbutton_hint;
- // compose optional opening link tag with optional hard link, mandatory for instance:
- self::$a_str_LinkOpenTag = '