false, "style" => 'boxcss_default'); $return['updt']=false; if (array_key_exists($_POST['add_sidebar'], $sidebar_info )===true){ /// check the sidebar name exists for avoid repeat sidebar names $get_random_number=range(1,99);//verify numbers up to 99 foreach ($get_random_number as $number){ $sidebar_name=$_POST['add_sidebar'].'_'.$number; if( array_key_exists( $sidebar_name, $sidebar_info )===true ) continue; else break; } $return[ 'updt' ]=true; $_POST[ 'add_sidebar' ] = $return['sidebar'] = $sidebar_name; } $new_sidebar[ $_POST['add_sidebar'] ] = BillyDroid_get_template_sidebar(); $new_sidebar[ $_POST['add_sidebar'] ]['name'] = $_POST['add_sidebar']; $get_widgets=get_option('sidebars_widgets'); switch ($_POST['sd_position']){ case 'Top': /*merge the current sidebar. Same to line 50*/ $sidebar_info = array_merge($new_sidebar,$sidebar_info); foreach ( $layout_info as $id_page => $value) { switch($id_page){ case '0': $layout_info[$id_page] = array_put_to_position( $layout_info[$id_page], $laynew, 6, $_POST['add_sidebar'] ); break; case 'themeshock_default_widget_boxes': break; default: $layout_info[$id_page] = array_put_to_position( $layout_info[$id_page], $laynew, 2, $_POST['add_sidebar'] ); break; } } $get_widgets = array_put_to_position( $get_widgets, array(), 2, 'sidebar-x' ); break; case 'Bottom': $sidebar_info = array_merge( $sidebar_info , $new_sidebar ); foreach ($layout_info as $id_page => $value){ if($id_page!=='themeshock_default_widget_boxes') { $new_layout [ $_POST['add_sidebar'] ]= $laynew ; $layout_info [ $id_page ] = array_merge( $value, $new_layout ); } } $get_widgets = array_put_to_position( $get_widgets, array(), count($get_widgets)-1, 'sidebar-x' ); break; } $new_widget = update_pos_widget( $get_widgets ); set_theme_mod( 'BillyDroid_layout_options', $layout_info );//regitrar layout en los didebar set_theme_mod( 'BillyDroid_sidebar', $sidebar_info );//registra un sidebar en las posisciones update_option('sidebars_widgets',$new_widget); echo json_encode( $return); exit; } add_action ( 'wp_ajax_add_sidebar', 'BillyDroid_add_sidebar' ); // delete sidebars function delete_sidebar(){ $sidebar_info = get_theme_mod( 'BillyDroid_sidebar' ); $layout_info = get_theme_mod('BillyDroid_layout_options'); $get_widgets = get_option('sidebars_widgets'); //delete sidebar foreach ( $layout_info as $id_page =>$value ) unset( $layout_info[ $id_page ][ $_POST['del_slider'] ] ); $count_sidebar=1; foreach ( $sidebar_info as $sidebar_name => $value ) { if ( $sidebar_name===$_POST['del_slider']) { unset( $sidebar_info[$_POST['del_slider']] ); $count_sidebar++; break; } $count_sidebar++; } $sidebar_delete = 'sidebar-'.$count_sidebar; unset( $get_widgets[$sidebar_delete] ); //update position sidebars $new_widget = update_pos_widget( $get_widgets ); set_theme_mod( 'BillyDroid_layout_options', $layout_info ); set_theme_mod( 'BillyDroid_sidebar', $sidebar_info ); update_option( 'sidebars_widgets', $new_widget); exit; } add_action ( 'wp_ajax_delete_sidebar', 'delete_sidebar' ); // load the current sidebar configuration per id_page function BillyDroid_get_layout(){ $layout_info = get_theme_mod( 'BillyDroid_layout_options' );//carga todas las posiciones de los layouts; echo json_encode( $layout_info[ $_POST['id_layout'] ]); exit; } add_action ( 'wp_ajax_get_layout', 'BillyDroid_get_layout' ); //update the sidebar configuration per id page function BillyDroid_update_sidebar_status ( ){ $layout_info = get_theme_mod( 'BillyDroid_layout_options' );//carga todas las posiciones de los layouts; $element=''; $value_status; foreach ($_POST as $element_layout => $value){ if($element_layout!=='idc_layout' && $element_layout!=='status'){ $element=$element_layout; switch($value){ case 'true': $value_status=true; break; case 'false': $value_status=false; break; default: $value_status=$value; break; } } } switch ($_POST['status']){ case 'style': if ($element==='footer_widget_style'){ $layout_info[$_POST['idc_layout']][$element]=$value_status; } else{ $layout_info[$_POST['idc_layout']][$element][$_POST['status']]=$value_status; } break; case 'active': if(isset($layout_info[$_POST['idc_layout']][$element][$_POST['status']])){ $layout_info[$_POST['idc_layout']][$element][$_POST['status']]=$value_status; } else{ $layout_info[$_POST['idc_layout']][$element]=$value_status; } if(isset($_POST['themeshock_default_widget_boxes'])){ $layout_info['themeshock_default_widget_boxes'] = $value_status; } break; } set_theme_mod( 'BillyDroid_layout_options', $layout_info); exit; } add_action ( 'wp_ajax_update_sidebar', 'BillyDroid_update_sidebar_status'); function GetArrKey( $findArr, $key_arr, $depth=0 ){ if( count($key_arr) <= $depth || !array_key_exists($key_arr[$depth], $findArr) ) return NULL; else if( count($key_arr) == $depth+1 ) return $findArr[$key_arr[$depth]]; return self::GetArrKey( $findArr[$key_arr[$depth]], $key_arr, $depth+1 ); } function array_put_to_position(&$array, $object, $position, $name = null){ $count = 0; $return = array(); foreach ($array as $k => $v) { // insert new object if ($count == $position) { if (!$name) $name = $count; $return[$name] = $object; $inserted = true; } // insert old object $return[$k] = $v; $count++; } if (!$name) $name = $count; if (!$inserted) $return[$name]; $array = $return; return $array; } function update_pos_widget($get_widgets){ $counter=1; $new_widget=array(); foreach ($get_widgets as $sidebar=> $value){ if (substr_count($sidebar,'sidebar-')>0){ $new_widget['sidebar-'.$counter]=$value; $counter++; } else{ $new_widget[$sidebar]=$value; } } return $new_widget; } ?>