function otw_filter_siderbar_widgets($index, $sidebars_widgets) { global $wp_registered_sidebars, $otw_plugin_options; $filtered_widgets = array(); otw_sbm_log($index, "\n", 2); otw_sbm_log($index, '|-> check tmp index ' . $index, 1, __FILE__, __LINE__); if (array_key_exists($index, $sidebars_widgets)) { otw_sbm_log($index, "\tindex(" . $index . ") in sidebars_widgets array", 1, __FILE__, __LINE__); if (isset($otw_plugin_options['activate_appearence']) && $otw_plugin_options['activate_appearence']) { otw_sbm_log($index, "\tactivate_appearence enabled", 1, __FILE__, __LINE__); $collected_widgets = array(); $requested_objects = otw_get_current_object(); if (count($requested_objects)) { foreach ($requested_objects as $objects) { otw_sbm_log($index, "\t |" . implode('|', $objects) . "|", 1, __FILE__, __LINE__); list($object, $object_id, $object_type) = $objects; $tmp_index = otw_validate_sidebar_index($index, $object, $object_id); otw_sbm_log($index, "\t validated tmp index is '" . $tmp_index . "'", 1, __FILE__, __LINE__); if (is_array($object_id)) { otw_sbm_log($tmp_index, "\tcheck for object " . $object . " " . implode(',', $object_id) . " " . $object_type, 1, __FILE__, __LINE__); } else { otw_sbm_log($tmp_index, "\tcheck for object " . $object . " " . $object_id . " " . $object_type, 1, __FILE__, __LINE__); } if ($tmp_index) { $otw_wc_invisible = array(); $otw_wc_visible = array(); if (isset($wp_registered_sidebars[$tmp_index]['widgets_settings'][$object]['_otw_wc'])) { otw_sbm_log($tmp_index, "\t\t::yes[_otw_wc]" . implode(',', $wp_registered_sidebars[$tmp_index]['widgets_settings'][$object]['_otw_wc']), 1, __FILE__, __LINE__); $filtered = true; foreach ($wp_registered_sidebars[$tmp_index]['widgets_settings'][$object]['_otw_wc'] as $tmp_widget => $tmp_widget_value) { if ($tmp_widget_value == 'vis') { foreach ($sidebars_widgets[$tmp_index] as $s_index => $s_widget) { if ($s_widget == $tmp_widget) { if (!otw_is_widget_item_excluded($tmp_index, $object, $s_widget, $wp_registered_sidebars)) { $collected_widgets[$tmp_widget] = $s_index; } break; } } $otw_wc_visible[$tmp_widget] = $tmp_widget; } elseif ($tmp_widget_value == 'invis') { $otw_wc_invisible[$tmp_widget] = $tmp_widget; } } otw_sbm_log($tmp_index, "\t\t::vis[" . implode(',', $otw_wc_visible) . ']', 1, __FILE__, __LINE__); otw_sbm_log($tmp_index, "\t\t::invis[" . implode(',', $otw_wc_invisible) . ']', 1, __FILE__, __LINE__); } else { otw_sbm_log($tmp_index, "\t\t::no[_otw_wc]", 1, __FILE__, __LINE__); } if (isset($wp_registered_sidebars[$tmp_index]['widgets_settings'][$object][$object_id]['exclude_widgets'])) { otw_sbm_log($tmp_index, "\t\t::excluded[" . implode(',', $wp_registered_sidebars[$tmp_index]['widgets_settings'][$object][$object_id]['exclude_widgets']) . ']', 1, __FILE__, __LINE__); foreach ($sidebars_widgets[$tmp_index] as $s_index => $tmp_widget) { $filtered = true; if (!array_key_exists($tmp_widget, $wp_registered_sidebars[$tmp_index]['widgets_settings'][$object][$object_id]['exclude_widgets'])) { if (!array_key_exists($tmp_widget, $otw_wc_invisible) && !array_key_exists($tmp_widget, $otw_wc_visible)) { if (!otw_is_widget_item_excluded($tmp_index, $object, $tmp_widget, $wp_registered_sidebars)) { $collected_widgets[$tmp_widget] = $s_index; } } } } } else { foreach ($sidebars_widgets[$tmp_index] as $s_index => $tmp_widget) { $filtered = true; if (!array_key_exists($tmp_widget, $otw_wc_invisible) && !array_key_exists($tmp_widget, $otw_wc_visible)) { if (!otw_is_widget_item_excluded($tmp_index, $object, $tmp_widget, $wp_registered_sidebars)) { $collected_widgets[$tmp_widget] = $s_index; } } } otw_sbm_log($tmp_index, "\t\t::collected[" . implode(',', array_keys($collected_widgets)) . "]", 1, __FILE__, __LINE__); } } else { otw_sbm_log($index, "\t\t::old collected[" . implode(',', array_keys($collected_widgets)) . "]", 1, __FILE__, __LINE__); } } } else { otw_sbm_log($index, "\tnothing in requested objects", 1, __FILE__, __LINE__); } $collected_widgets = otw_filter_strict_widgets($index, $collected_widgets); //fix the order of widgets if (is_array($collected_widgets) && count($collected_widgets)) { $filtered_widgets = array(); asort($collected_widgets); foreach ($collected_widgets as $tmp_widget => $tmp_order) { $filtered_widgets[] = $tmp_widget; } } } else { $filtered_widgets = $sidebars_widgets[$index]; } } otw_sbm_log($index, '<-| (' . implode(',', $filtered_widgets) . ')', 1, __FILE__, __LINE__); return $filtered_widgets; }
function otw_sidebar_index($index) { global $wp_registered_sidebars, $otw_replaced_sidebars; $sidebars_widgets = wp_get_sidebars_widgets(); if (isset($otw_replaced_sidebars[$index])) { //we have set replacemend. $requested_objects = otw_get_current_object(); //check if the new sidebar is valid for the current requested resource foreach ($otw_replaced_sidebars[$index] as $repl_sidebar) { if (isset($wp_registered_sidebars[$repl_sidebar])) { if ($wp_registered_sidebars[$repl_sidebar]['status'] == 'active') { foreach ($requested_objects as $objects) { list($object, $object_id) = $objects; if ($object && $object_id) { $tmp_index = otw_validate_sidebar_index($repl_sidebar, $object, $object_id); if ($tmp_index) { if (!empty($sidebars_widgets[$tmp_index])) { $sidebars_widgets[$tmp_index] = otw_filter_siderbar_widgets($tmp_index, $sidebars_widgets); if (count($sidebars_widgets[$tmp_index])) { $index = $tmp_index; break 2; } } } } //end hs object and object id } //end loop requested objects } } } } return $index; }