????JFIF??x?x????'
| Server IP : 172.67.174.47 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/./cwd/wp-content/plugins/cherry-plugin-x/includes/widgets/ |
Upload File : |
<?php
/**
*
* Create widget showing manager
*
**/
// get theme name
function get_cherry_name() {
if (function_exists('wp_get_theme')) {
$theme = wp_get_theme();
if ( $theme->exists() ) {
$theme_name = $theme->Name;
}
} else {
$theme_data = get_theme_data( get_template_directory() . '/style.css' );
$theme_name = $theme_data['Name'];
}
$theme_name = preg_replace("/\W/", "_", strtolower($theme_name) );
return $theme_name;
}
// load script and stylesheet only widgets page
add_action('admin_enqueue_scripts', 'widgets_scripts');
function widgets_scripts($hook) {
$widget_page = 'widgets.php';
if ( $widget_page != $hook) return;
// widget rules JS
wp_register_script('widget-rules-js', CHERRY_PLUGIN_URL.'admin/js/widget-rules.js', array('jquery'));
wp_enqueue_script('widget-rules-js');
// widget rules CSS
wp_register_style('widget-rules-css', CHERRY_PLUGIN_URL.'admin/css/widget-rules.css');
wp_enqueue_style('widget-rules-css');
}
// Clean up the variables
add_action('widgets_init', 'clean_rules');
function clean_rules() {
$themename = 'cherry';
// get option and style value
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$custom_class = get_option($themename . '_widget_custom_class');
$responsive = get_option($themename . '_widget_responsive');
$users = get_option($themename . '_widget_users');
// if this options_type is set at first time
if ( !is_array($options_type) ) {
$options_type = array();
}
// if this option is set at first time
if ( !is_array($options) ) {
$options = array();
}
// if this custom_class is set at first time
if ( !is_array($custom_class) ) {
$custom_class = array();
}
// if this responsive is set at first time
if ( !is_array($responsive) ) {
$responsive = array();
}
// if this users is set at first time
if ( !is_array($users) ) {
$users = array();
}
// get all widgets names
$all_widgets = array();
$all_widgets_assoc = get_option('sidebars_widgets');
// iterate throug the sidebar widgets settings to get all active widgets names
foreach($all_widgets_assoc as $sidebar_name => $sidebar) {
// remember about wp_inactive_widgets and array_version fields!
if($sidebar_name != 'wp_inactive_widgets' && is_array($sidebar) && count($sidebar) > 0) {
foreach($sidebar as $widget_name) {
array_push($all_widgets, $widget_name);
}
}
}
// get the widget names from the exisitng settings
$widget_names = array_keys($options_type);
// check for the unexisting widgets
foreach($widget_names as $widget_name) {
// if widget doesn't exist - remove it from the options
if(in_array($widget_name, $all_widgets) !== TRUE) {
if(isset($options_type) && is_array($options_type) && isset($options_type[$widget_name])) {
unset($options_type[$widget_name]);
}
if(isset($options) && is_array($options) && isset($options[$widget_name])) {
unset($options[$widget_name]);
}
if(isset($custom_class) && is_array($custom_class) && isset($custom_class[$widget_name])) {
unset($custom_class[$widget_name]);
}
if(isset($responsive) && is_array($responsive) && isset($responsive[$widget_name])) {
unset($responsive[$widget_name]);
}
if(isset($users) && is_array($users) && isset($users[$widget_name])) {
unset($users[$widget_name]);
}
}
}
// update the settings
update_option($themename . '_widget_rules_type', $options_type);
update_option($themename . '_widget_rules', $options);
update_option($themename . '_widget_custom_class', $custom_class);
update_option($themename . '_widget_responsive', $responsive);
update_option($themename . '_widget_users', $users);
}
// define an additional operation when save the widget
add_filter( 'widget_update_callback', 'cherry_widget_update', 10, 4);
// definition of the additional operation
function cherry_widget_update($instance, $new_instance, $old_instance, $widget) {
$themename = 'cherry';
clean_rules();
// check if param was set
if ( isset( $_POST[$themename . '_widget_rules_' . $widget->id] ) ) {
// get option and style value
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$custom_class = get_option($themename . '_widget_custom_class');
$responsive = get_option($themename . '_widget_responsive');
$users = get_option($themename . '_widget_users');
// if this options_type is set at first time
if ( !is_array($options_type) ) {
$options_type = array();
}
// if this option is set at first time
if ( !is_array($options) ) {
$options = array();
}
// if this custom_class is set at first time
if ( !is_array($custom_class) ) {
$custom_class = array();
}
// if this responsive is set at first time
if ( !is_array($responsive) ) {
$responsive = array();
}
// if this users is set at first time
if ( !is_array($users) ) {
$users = array();
}
// set the new key in the array
$options_type[$widget->id] = $_POST[$themename . '_widget_rules_type_' . $widget->id];
$options[$widget->id] = $_POST[$themename . '_widget_rules_' . $widget->id];
$custom_class[$widget->id] = $_POST[$themename . '_widget_custom_class_' . $widget->id];
$responsive[$widget->id] = $_POST[$themename . '_widget_responsive_' . $widget->id];
$users[$widget->id] = $_POST[$themename . '_widget_users_' . $widget->id];
// update the settings
update_option($themename . '_widget_rules_type', $options_type);
update_option($themename . '_widget_rules', $options);
update_option($themename . '_widget_custom_class', $custom_class);
update_option($themename . '_widget_responsive', $responsive);
update_option($themename . '_widget_users', $users);
// $instance = $old_instance;
$instance[$themename . '_widget_rules_type_' . $widget->id] = $options_type[$widget->id];
$instance[$themename . '_widget_rules_' . $widget->id] = $options[$widget->id];
$instance[$themename . '_widget_custom_class_' . $widget->id] = $custom_class[$widget->id];
$instance[$themename . '_widget_responsive_' . $widget->id] = $responsive[$widget->id];
$instance[$themename . '_widget_users_' . $widget->id] = $users[$widget->id];
}
// return the widget instance
return $instance;
}
add_filter('widget_form_callback', 'kc_widget_form_extend', 10, 2);
function kc_widget_form_extend( $instance, $widget ) {
$themename = 'cherry';
// get option and style value
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$custom_class = get_option($themename . '_widget_custom_class');
$responsive = get_option($themename . '_widget_responsive');
$users = get_option($themename . '_widget_users');
// if this option is set at first time
if ( !is_array($options_type) ) {
$options_type = array();
}
// if this option is set at first time
if ( !is_array($options) ) {
$options = array();
}
// if this responsive is set at first time
if ( !is_array($responsive) ) {
$responsive = array();
}
// if this users is set at first time
if ( !is_array($users) ) {
$users = array();
}
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$w_id = $widget->id_base;
$w_num = abs($_POST['widget_number']);
// save widget rules type
if (isset($_POST[$themename . '_widget_rules_type_' . $w_id . '-' . $w_num])) {
$options_type[$widget->id] = $_POST[$themename . '_widget_rules_type_' . $w_id . '-' . $w_num];
$instance[$themename . '_widget_rules_type_' . $widget->id] = $options_type[$widget->id];
}
// save widget rules
if (isset($_POST[$themename . '_widget_rules_' . $w_id . '-' . $w_num])) {
$options[$widget->id] = $_POST[$themename . '_widget_rules_' . $w_id . '-' . $w_num];
$instance[$themename . '_widget_rules_' . $widget->id] = $options[$widget->id];
}
// save widget style CSS
if (isset($_POST[$themename . '_widget_custom_class_' . $w_id . '-' . $w_num])) {
$custom_class[$widget->id] = $_POST[$themename . '_widget_custom_class_' . $w_id . '-' . $w_num];
$instance[$themename . '_widget_custom_class_' . $widget->id] = $custom_class[$widget->id];
}
// save widget responsive
if (isset($_POST[$themename . '_widget_responsive_' . $w_id . '-' . $w_num])) {
$responsive[$widget->id] = $_POST[$themename . '_widget_responsive_' . $w_id . '-' . $w_num];
$instance[$themename . '_widget_responsive_' . $widget->id] = $responsive[$widget->id];
}
// save widget users
if (isset($_POST[$themename . '_widget_users_' . $w_id . '-' . $w_num])) {
$users[$widget->id] = $_POST[$themename . '_widget_users_' . $w_id . '-' . $w_num];
$instance[$themename . '_widget_users_' . $widget->id] = $users[$widget->id];
}
// update the settings
update_option($themename . '_widget_rules_type', $options_type);
update_option($themename . '_widget_rules', $options);
update_option($themename . '_widget_custom_class', $custom_class);
update_option($themename . '_widget_responsive', $responsive);
update_option($themename . '_widget_users', $users);
}
return $instance;
}
// Hide the widget if necessary
add_filter( 'widget_display_callback', 'maybe_hide_widget', 10, 3 );
function maybe_hide_widget( $instance, $widget_object, $args ) {
if ( ! check_widget_visibility( $args['widget_id'] ) )
return false;
return $instance;
}
// Add custom widget class
add_filter( 'dynamic_sidebar_params', 'cherry_dynamic_sidebar_params' );
function cherry_dynamic_sidebar_params( $params ) {
global $wp_registered_widgets;
$themename = 'cherry';
$widget_id = $params[0]['widget_id'];
// get option and style value
$responsive = get_option($themename . '_widget_responsive');
$custom_class = get_option($themename . '_widget_custom_class');
if ( !isset($responsive[$widget_id]) && !isset($custom_class[$widget_id]) )
return $params;
$haystack_str = htmlspecialchars(stripslashes($params[0]['before_widget']), ENT_QUOTES);
$params[0]['before_widget'] = add_widget_class_attr($haystack_str);
if ( isset($custom_class[$widget_id]) && !empty($custom_class[$widget_id]) )
$params[0]['before_widget'] = preg_replace( '/class="/', "class=\"{$custom_class[$widget_id]} ", $params[0]['before_widget'], 1 );
if ( isset($responsive[$widget_id]) && !empty($responsive[$widget_id]) )
$params[0]['before_widget'] = preg_replace( '/class="/', "class=\"{$responsive[$widget_id]} ", $params[0]['before_widget'], 1 );
return $params;
}
// function to add (if necessary) class attribute to the widget holder
function add_widget_class_attr($haystack_str) {
$needle_str = 'class=';
$pos = strpos($haystack_str, $needle_str);
if ( $pos === false ) {
$search_str = htmlspecialchars('>');
$replace_str = htmlspecialchars(' class="">');
$haystack_str = str_replace($search_str, $replace_str, $haystack_str);
}
return htmlspecialchars_decode($haystack_str);
}
add_action( 'sidebar_admin_setup', 'cherry_add_widget_control');
function cherry_add_widget_control() {
global $wp_registered_widgets;
global $wp_registered_widget_controls;
$themename = 'cherry';
// get option value
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$custom_class = get_option($themename . '_widget_custom_class');
$responsive = get_option($themename . '_widget_responsive');
$users = get_option($themename . '_widget_users');
// if this option is set at first time
if( !is_array($options) ) {
$options = array();
}
// if this style CSS is set at first time
if( !is_array($custom_class) ) {
$custom_class = array();
}
// if this responsive is set at first time
if( !is_array($responsive) ) {
$responsive = array();
}
// if this users is set at first time
if( !is_array($users) ) {
$users = array();
}
// AJAX updates
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
foreach ( (array) $_POST['widget-id'] as $widget_number => $widget_id ) {
// save widget rules type
if (isset($_POST[$themename . '_widget_rules_type_' . $widget_id])) {
$options_type[$widget_id] = $_POST[$themename . '_widget_rules_type_' . $widget_id];
}
// save widget rules
if (isset($_POST[$themename . '_widget_rules_' . $widget_id])) {
$options[$widget_id] = $_POST[$themename . '_widget_rules_' . $widget_id];
}
// save widget style CSS
if (isset($_POST[$themename . '_widget_custom_class_' . $widget_id])) {
$custom_class[$widget_id] = $_POST[$themename . '_widget_custom_class_' . $widget_id];
}
// save widget responsive
if (isset($_POST[$themename . '_widget_responsive_' . $widget_id])) {
$responsive[$widget_id] = $_POST[$themename . '_widget_responsive_' . $widget_id];
}
// save widget users
if (isset($_POST[$themename . '_widget_users_' . $widget_id])) {
$users[$widget_id] = $_POST[$themename . '_widget_users_' . $widget_id];
}
}
}
// save the widget id
foreach ( $wp_registered_widgets as $id => $widget ) {
if ( isset($wp_registered_widget_controls[$id]) ) {
// save the widget id
$wp_registered_widget_controls[$id]['params'][0]['widget_id'] = $id;
// do the redirection
$wp_registered_widget_controls[$id]['callback_redir'] = $wp_registered_widget_controls[$id]['callback'];
$wp_registered_widget_controls[$id]['callback'] = 'cherry_widget_control';
}
}
}
// function to add the widget control
function cherry_widget_control() {
// get the access to the registered widget controls
global $wp_registered_widget_controls;
$themename = 'cherry';
// get the widget parameters
$params = func_get_args();
// find the widget ID
$id = $params[0]['widget_id'];
$unique_id = $id . '-' . rand(10000000, 99999999);
// get option value
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$custom_class = get_option($themename . '_widget_custom_class');
$responsive = get_option($themename . '_widget_responsive');
$users = get_option($themename . '_widget_users');
// if this option is set at first time
if ( !is_array($options_type) ) {
$options_type = array();
}
// if this option is set at first time
if ( !is_array($options) ) {
$options = array();
}
// if this custom_class is set at first time
if ( !is_array($custom_class) ) {
$custom_class = array();
}
// if this responsive is set at first time
if ( !is_array($responsive) ) {
$responsive = array();
}
// if this users is set at first time
if ( !is_array($users) ) {
$users = array();
}
// get the widget form callback
$callback = $wp_registered_widget_controls[$id]['callback_redir'];
// if the callbac exist - run it with the widget parameters
if (isset($callback) && is_callable($callback)) {
call_user_func_array($callback, $params);
}
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$w_id = $_POST['id_base'];
$w_num = abs($_POST['widget_number']);
// save widget rules type
if (isset($_POST[$themename . '_widget_rules_type_' . $w_id . '-' . $w_num])) {
$options_type[$id] = $_POST[$themename . '_widget_rules_type_' . $w_id . '-' . $w_num];
}
// save widget rules
if (isset($_POST[$themename . '_widget_rules_' . $w_id . '-' . $w_num])) {
$options[$id] = $_POST[$themename . '_widget_rules_' . $w_id . '-' . $w_num];
}
// save widget style CSS
if (isset($_POST[$themename . '_widget_custom_class_' . $w_id . '-' . $w_num])) {
$custom_class[$id] = $_POST[$themename . '_widget_custom_class_' . $w_id . '-' . $w_num];
}
// save widget responsive
if (isset($_POST[$themename . '_widget_responsive_' . $w_id . '-' . $w_num])) {
$responsive[$id] = $_POST[$themename . '_widget_responsive_' . $w_id . '-' . $w_num];
}
// save widget users
if (isset($_POST[$themename . '_widget_users_' . $w_id . '-' . $w_num])) {
$users[$id] = $_POST[$themename . '_widget_users_' . $w_id . '-' . $w_num];
}
// update the settings
update_option($themename . '_widget_rules_type', $options_type);
update_option($themename . '_widget_rules', $options);
update_option($themename . '_widget_custom_class', $custom_class);
update_option($themename . '_widget_responsive', $responsive);
update_option($themename . '_widget_users', $users);
}
// value of the option
$value_type = !empty($options_type[$id]) ? htmlspecialchars(stripslashes($options_type[$id]),ENT_QUOTES) : '';
$value = !empty($options[$id]) ? htmlspecialchars(stripslashes($options[$id]),ENT_QUOTES) : '';
$c_class = !empty($custom_class[$id]) ? htmlspecialchars(stripslashes($custom_class[$id]),ENT_QUOTES) : '';
$responsiveMode = !empty($responsive[$id]) ? htmlspecialchars(stripslashes($responsive[$id]),ENT_QUOTES) : '';
$usersMode = !empty($users[$id]) ? htmlspecialchars(stripslashes($users[$id]),ENT_QUOTES) : '';
//
// output the custom CSS class field
echo '<p class="custom_class"><label for="' . $themename . '_widget_custom_class_'.$id.'">'.__('Custom CSS class', CHERRY_PLUGIN_DOMAIN).': <input type="text" class="widefat" name="' . $themename . '_widget_custom_class_'.$id.'" id="' . $themename . '_widget_custom_class_'.$id.'" value="'.$c_class.'" /></label></p>';
echo '
<a class="gk_widget_rules_btn button">'.__('Visibility', CHERRY_PLUGIN_DOMAIN).'</a>
<div class="gk_widget_rules_wrapper'.((isset($_COOKIE['gk_last_opened_widget_rules_wrap']) && $_COOKIE['gk_last_opened_widget_rules_wrap'] == 'gk_widget_rules_form_'.$id) ? ' active' : '').'" data-id="gk_widget_rules_form_'.$id.'">
<p>
<label for="' . $themename . '_widget_rules_'.$id.'">'.__('Visible at', CHERRY_PLUGIN_DOMAIN).': </label>
<select name="' . $themename . '_widget_rules_type_'.$id.'" id="' . $themename . '_widget_rules_type_'.$id.'" class="widefat gk_widget_rules_select">
<option value="all"'.(($value_type != "include" && $value_type != 'exclude') ? " selected=\"selected\"":"").'>'.__('All pages', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="exclude"'.(($value_type == "exclude") ? " selected=\"selected\"":"").'>'.__('All pages expecting', CHERRY_PLUGIN_DOMAIN).':</option>
<option value="include"'.(($value_type == "include") ? " selected=\"selected\"":"").'>'.__('No pages expecting', CHERRY_PLUGIN_DOMAIN).':</option>
</select>
</p>
<fieldset class="gk_widget_rules_form" id="gk_widget_rules_form_'.$unique_id.'" data-id="gk_widget_rules_form_'.$id.'">
<legend>'.__('Select page to add', CHERRY_PLUGIN_DOMAIN).'</legend>
<select class="widefat gk_widget_rules_form_select">
<option value="homepage">'.__('Homepage', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="blog">'.__('Blog', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="page:">'.__('Page', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="post:">'.__('Post', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="category:">'.__('Archive', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="tag:">'.__('Tag', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="archive">'.__('Archive', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="author:">'.__('Author', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="search">'.__('Search page', CHERRY_PLUGIN_DOMAIN).'</option>
<option value="page404">'.__('404 page', CHERRY_PLUGIN_DOMAIN).'</option>
</select>
<p><label>'.__('Page ID/Title/slug', CHERRY_PLUGIN_DOMAIN).':<input type="text" class="gk_widget_rules_form_input_page" /></label></p>
<p><label>'.__('Post ID/Title/slug', CHERRY_PLUGIN_DOMAIN).':<input type="text" class="gk_widget_rules_form_input_post" /></label></p>
<p><label>'.__('Category ID/Name/slug', CHERRY_PLUGIN_DOMAIN).':<input type="text" class="gk_widget_rules_form_input_category" /></label></p>
<p><label>'.__('Tag ID/Name', CHERRY_PLUGIN_DOMAIN).':<input type="text" class="gk_widget_rules_form_input_tag" /></label></p>
<p><label>'.__('Author', CHERRY_PLUGIN_DOMAIN).':<input type="text" class="gk_widget_rules_form_input_author" /></label></p>
<p><button class="gk_widget_rules_btn button-secondary">'.__('Add page', CHERRY_PLUGIN_DOMAIN).'</button></p>
<input type="text" name="' . $themename . '_widget_rules_'.$id.'" id="' . $themename . '_widget_rules_'.$id.'" value="'.$value.'" class="gk_widget_rules_output" />
<fieldset class="gk_widget_rules_pages">
<legend>'.__('Selected pages', CHERRY_PLUGIN_DOMAIN).'</legend>
<span class="gk_widget_rules_nopages">'.__('No pages', CHERRY_PLUGIN_DOMAIN).'</span>
<div></div>
</fieldset>
</fieldset>
<script type="text/javascript">gk_widget_control_init(\'#gk_widget_rules_form_'.$unique_id.'\');</script>';
// create the list of suffixes
cherry_widget_control_styles_list($params[0]['widget_id'], $id, $responsiveMode, $usersMode);
}
function cherry_widget_control_styles_list($widget_name, $id, $value2, $value3) {
$themename = 'cherry';
echo '<div>';
// prepare an array of options
$items = array('<option value="" selected="selected">'.__('None', CHERRY_PLUGIN_DOMAIN).'</option>');
// prepare the responsive select
$items = array(
'<option value="visible-all-devices"'.((!$value2 || $value2 == 'visible-all-devices') ? ' selected="selected"' : '').'>'.__('All devices', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="visible-desktop"'.(($value2 == 'visible-desktop') ? ' selected="selected"' : '').'>'.__('Desktops', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="visible-tablet"'.(($value2 == 'visible-tablet') ? ' selected="selected"' : '').'>'.__('Tablets', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="visible-phone"'.(($value2 == 'visible-phone') ? ' selected="selected"' : '').'>'.__('Phones', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="hidden-phone"'.(($value2 == 'hidden-phone') ? ' selected="selected"' : '').'>'.__('Desktops/Tablets', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="hidden-desktop"'.(($value2 == 'hidden-desktop') ? ' selected="selected"' : '').'>'.__('Tablets/Phones', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="hidden-tablet"'.(($value2 == 'hidden-tablet') ? ' selected="selected"' : '').'>'.__('Desktops/Phones', CHERRY_PLUGIN_DOMAIN).'</option>'
);
// output the responsive select
echo '<p class="device_visible"><label for="' . $themename . '_widget_responsive_'.$id.'">'.__('Visible on', CHERRY_PLUGIN_DOMAIN).': <select name="' . $themename . '_widget_responsive_'.$id.'" id="' . $themename . '_widget_responsive_'.$id.'" class="widefat">';
//
foreach($items as $item) {
echo $item;
}
//
echo '</select></label></p>';
// output the user groups select
$items = array(
'<option value="all"'.(($value3 == null || !$value3 || $value3 == 'all') ? ' selected="selected"' : '').'>'.__('All users', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="guests"'.(($value3 == 'guests') ? ' selected="selected"' : '').'>'.__('Only guests', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="registered"'.(($value3 == 'registered') ? ' selected="selected"' : '').'>'.__('Only registered users', CHERRY_PLUGIN_DOMAIN).'</option>',
'<option value="administrator"'.(($value3 == 'administrator') ? ' selected="selected"' : '').'>'.__('Only administrator', CHERRY_PLUGIN_DOMAIN).'</option>'
);
//
echo '<p class="users_visible"><label for="' . $themename . '_widget_users_'.$id.'">'.__('Visible for', CHERRY_PLUGIN_DOMAIN).': <select name="' . $themename . '_widget_users_'.$id.'" id="' . $themename . '_widget_users_'.$id.'" class="widefat">';
//
foreach($items as $item)
echo $item;
//
echo '</select></label></p>';
// // output the custom CSS class field
// echo '<p class="custom_class"><label for="' . $themename . '_widget_custom_class_'.$id.'">'.theme_locals("custom_css_class").': <input type="text" class="widefat" name="' . $themename . '_widget_custom_class_'.$id.'" id="' . $themename . '_widget_custom_class_'.$id.'" value="'.$value4.'" /></label></p>';
echo '</div><!--.gk_widget_rules_wrapper-->';
//
echo '</div>';
echo '<hr />';
}
function check_widget_visibility($id) {
// get access to registered widgets
global $wp_registered_widgets;
// sidebar flag
$sidebar_flag = false;
$themename = 'cherry';
// get the widget showing rules
$options_type = get_option($themename . '_widget_rules_type');
$options = get_option($themename . '_widget_rules');
$users = get_option($themename . '_widget_users');
// if widget doesn't exists - skip this iteration
if ( !isset($wp_registered_widgets[$id]) ) return false;
// check the widget rules
$conditional_result = false;
// create conditional function based on rules
if ( isset($options[$id]) && $options[$id] != '' ) {
// create function
$conditional_function = create_function('', 'return '.cherry_condition($options_type[$id], $options[$id], $users[$id]).';');
// generate the result of function
$conditional_result = $conditional_function();
} else if ( isset($users[$id]) && $users[$id] != '' ) {
// create function
$conditional_function = create_function('', 'return '.cherry_condition($options_type[$id], $options[$id], $users[$id]).';');
// generate the result of function
$conditional_result = $conditional_function();
}
// if condition for widget isn't set or is TRUE
if ( (!isset($options[$id]) || $options[$id] == '') && (!isset($users[$id]) || $users[$id] == '') || $conditional_result === TRUE ) {
// return TRUE, because at lease one widget exists in the specific sidebar
$sidebar_flag = true;
}
// set the state of the widget
$wp_registered_widgets[$id]['cherrystate'] = $conditional_result;
return $sidebar_flag;
}
/**
*
* Function used to create conditional string
*
* @param mode - mode of the condition - exclude, all, include
* @param input - input data separated by commas, look into example inside the function
* @param users - the value of the user access
*
* @return HTML output
*
**/
function cherry_condition($mode, $input, $users) {
// Example input:
// homepage,page:12,post:10,category:test,tag:test
$mode_output = '';
if ( !empty($input) ) :
$mode_output = ' (';
if ( $mode == 'all' ) {
$mode_output = '';
// } else if (( $mode == 'exclude' ) && ( $users == 'all')) {
} else if (( $mode == 'exclude' )) {
$mode_output = ' !(';
}
if($mode != 'all') {
$input = substr($input, 1);
$input = explode(',', $input);
for($i = 0; $i < count($input); $i++) {
if($i > 0) {
$mode_output .= '||';
}
if(stripos($input[$i], 'homepage') !== FALSE) {
$mode_output .= ' is_front_page() ';
} else if(stripos($input[$i], 'blog') !== FALSE) {
$mode_output .= ' is_home() ';
} else if(stripos($input[$i], 'page:') !== FALSE) {
$mode_output .= ' is_page(\'' . substr($input[$i], 5) . '\') ';
} else if(stripos($input[$i], 'post:') !== FALSE) {
$mode_output .= ' is_single(\'' . substr($input[$i], 5) . '\') ';
} else if(stripos($input[$i], 'category:') !== FALSE) {
$mode_output .= ' (is_category(\'' . substr($input[$i], 9) . '\') || (in_category(\'' . substr($input[$i], 9) . '\') && is_single())) ';
} else if(stripos($input[$i], 'tag:') !== FALSE) {
$mode_output .= ' (is_tag(\'' . substr($input[$i], 4) . '\') || (has_tag(\'' . substr($input[$i], 4) . '\') && is_single())) ';
} else if(stripos($input[$i], 'archive') !== FALSE) {
$mode_output .= ' is_archive() ';
} else if(stripos($input[$i], 'author:') !== FALSE) {
$mode_output .= ' (is_author(\'' . substr($input[$i], 7) . '\') && is_single()) ';
} else if(stripos($input[$i], 'search') !== FALSE) {
$mode_output .= ' is_search() ';
} else if(stripos($input[$i], 'page404') !== FALSE) {
$mode_output .= ' is_404() ';
}
}
$mode_output .= ')';
}
endif;
$users_output = '';
if ( $users != 'all' ) {
if($users == 'guests') {
$users_output .= ' !is_user_logged_in() ';
} else if($users == 'registered') {
$users_output .= ' is_user_logged_in() ';
} else if($users == 'administrator') {
$users_output .= ' current_user_can(\'manage_options\') ';
}
}
if ( !empty($mode_output) && !empty($users_output) ) {
$operator = ' && ';
} else {
$operator = '';
}
$output = $mode_output . (($users_output == '') ? '' : $operator . $users_output );
if ( $output == '' )
$output = ' TRUE';
return $output;
} ?>