Example #1
0
 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;
 }
Example #2
0
 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;
 }