HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/root/proc/self/cwd/wp-content/themes/ronneby/inc/simplecsswidgets.php
<?php

/**
 * @package Simple_CSS_For_Widgets
 * @version 1.0
 */
if (!defined('ABSPATH')) {
	exit;
}
global $th_widgetcss_options;

if ((!$th_widgetcss_options = get_option('widget_css') ) || !is_array($th_widgetcss_options)) {
	$th_widgetcss_options = array();
}

if (is_admin()) {
	add_action('sidebar_admin_setup', 'th_widget_css_expand_control');
	add_filter('widget_update_callback', 'th_widget_css_widget_update_callback', 10, 3);
}

add_filter('dynamic_sidebar_params', 'th_filter_widget');

/**
 * Registered Callback function for the admin sidebar setup
 *
 * Augments the Widgets with extra control to specify a CSS class
 */
function th_widget_css_expand_control() {

	global $wp_registered_widgets, $wp_registered_widget_controls, $th_widgetcss_options;

	if ('post' == strtolower($_SERVER['REQUEST_METHOD'])) {
		foreach ((array) $_POST['widget-id'] as $widget_number => $widget_id) {
			if (isset($_POST[$widget_id . '-widget_css'])) {
				$th_widgetcss_options[$widget_id] = $_POST[$widget_id . '-widget_css'];
			}
		}
	}

	update_option('widget_css', $th_widgetcss_options);

	foreach ($wp_registered_widgets as $id => $widget) {
		if (!$wp_registered_widget_controls[$id]) {
			wp_register_widget_control($id, $widget['name'], 'widget_css_empty_control');
		}

		$wp_registered_widget_controls[$id]['callback_widget_css_redirect'] = $wp_registered_widget_controls[$id]['callback'];
		$wp_registered_widget_controls[$id]['callback'] = 'widget_css_extra_control';
		array_push($wp_registered_widget_controls[$id]['params'], $id);
	}
}

/**
 * Callback function for the agumented widget control.
 *
 * Renders the text field box to the widget where the CSS class is to be specified.
 */
function widget_css_extra_control() {

	global $wp_registered_widget_controls, $th_widgetcss_options;

	$params = func_get_args();
	$id = array_pop($params);
	$callback = $wp_registered_widget_controls[$id]['callback_widget_css_redirect'];

	if (is_callable($callback)) {
		call_user_func_array($callback, $params);
	}

	$value = !empty($th_widgetcss_options[$id]) ? htmlspecialchars(stripslashes($th_widgetcss_options[$id]), ENT_QUOTES) : '';


	if (isset($params[0]['number'])) {
		$number = $params[0]['number'];
	}

	if (isset($number) && $number == -1) {
		$number = "%i%";
		$value = "";
	}

	$id_disp = $id;

	if (isset($number)) {
		$id_disp = $wp_registered_widget_controls[$id]['id_base'] . '-' . $number;
	}

	echo "<p><label for='" . esc_attr($id_disp) . "-widget_css'>" . __('CSS class', 'dfd') . " <input type='text' name='" . esc_attr($id_disp) . "-widget_css' id='" . esc_attr($id_disp) . "-widget_css' value='" . $value . "' /></label></p>";
}

/**
 * Callback Function for widget update.
 *
 * Saves the CSS class value that has been specified for the widget.
 */
function th_widget_css_widget_update_callback($instance, $new_instance, $this_widget) {
	if(is_object($this_widget)) {
		global $th_widgetcss_options;
		$widget_id = $this_widget->id;
		if (isset($_POST[$widget_id . '-widget_css'])) {
			$th_widgetcss_options[$widget_id] = $_POST[$widget_id . '-widget_css'];
			update_option('widget_css', $th_widgetcss_options);
		}
	}

	return $instance;
}

/**
 * Callback function for the dynamic_sidebar_params
 *
 * Dynamically applies the specified CSS class to the widget when it is rendered at the front end.
 */
function th_filter_widget($params) {

	global $th_widgetcss_options;

	if (isset($th_widgetcss_options[$params[0]['widget_id']]) && trim($th_widgetcss_options[$params[0]['widget_id']]) != '') {

		if (trim($params[0]['before_widget']) == '') {
			$params[0]['before_widget'] = '<div class="' . $th_widgetcss_options[$params[0]['widget_id']] . '">';
			$params[0]['after_widget'] = '</div>';
		} else {
			$xml = simplexml_load_string($params[0]['before_widget'] . "#splt#" . $params[0]['after_widget']);

			if (isset($xml['class'])) {
				$xml['class'] = $xml['class'] . ' ' . $th_widgetcss_options[$params[0]['widget_id']];
			} else {
				$xml['class'] = $th_widgetcss_options[$params[0]['widget_id']];
			}

			$processedtags = explode('#splt#', $xml->asXML());

			$params[0]['before_widget'] = $processedtags[0];
			$params[0]['after_widget'] = $processedtags[1];
		}
	}
	return $params;
}