$pos) { $orders[$id] = $step * ($pos<0 ? -$crt : $crt); $crt++; } } global $template; include_once(PHPWG_ROOT_PATH.'include/block.class.php'); $menu = new BlockManager('menubar'); $menu->load_registered_blocks(); $reg_blocks = $menu->get_registered_blocks(); $mb_conf = @$conf[ 'blk_'.$menu->get_id() ]; if ( is_string($mb_conf) ) $mb_conf = unserialize( $mb_conf ); if ( !is_array($mb_conf) ) $mb_conf=array(); foreach ($mb_conf as $id => $pos) { if (!isset($reg_blocks[$id])) unset($mb_conf[$id]); } if ( isset($_POST['reset']) and !is_adviser()) { $mb_conf = array(); $query = ' UPDATE '.CONFIG_TABLE.' SET value="" WHERE param="blk_'.addslashes($menu->get_id()).'" LIMIT 1'; pwg_query($query); } $idx=1; foreach ($reg_blocks as $id => $block) { if ( !isset($mb_conf[$id]) ) $mb_conf[$id] = $idx*50; $idx++; } if ( isset($_POST['submit']) and !is_adviser() ) { foreach ( $mb_conf as $id => $pos ) { $hide = isset($_POST['hide_'.$id]); $mb_conf[$id] = ($hide ? -1 : +1)*abs($pos); $pos = (int)@$_POST['pos_'.$id]; if ($pos>0) $mb_conf[$id] = $mb_conf[$id] > 0 ? $pos : -$pos; } make_consecutive( $mb_conf ); // BEGIN OPTIM - DONT ASK ABOUT THIS ALGO - but optimizes the size of the array we save in DB /* !!! OPTIM DISABLED UNTIL IT HAS BEEN FIXED !!! $reg_keys = array_keys($reg_blocks); $cnf_keys = array_keys($mb_conf); $best_slice = array( 'len'=>0 ); for ($i=0; $i$best_slice['len']) { $best_slice['len'] = 1+$k; $best_slice['start_cnf'] = $j; } } else break; } } } */ $mb_conf_db = $mb_conf; /* if ($best_slice['len']) { for ($j=0; $j<$best_slice['start_cnf']; $j++ ) { $sign = $mb_conf_db[ $cnf_keys[$j] ] > 0 ? 1 : -1; $mb_conf_db[ $cnf_keys[$j] ] = $sign * ( ($best_slice['start_cnf'])*50 - ($best_slice['start_cnf']-$j) ); } for ($j=$best_slice['start_cnf']; $j<$best_slice['start_cnf']+$best_slice['len']; $j++ ) { if ($mb_conf_db[ $cnf_keys[$j] ] > 0) unset( $mb_conf_db[ $cnf_keys[$j] ] ); } } //var_export( $best_slice ); var_export($mb_conf); var_export($mb_conf_db); // END OPTIM */ $query = ' UPDATE '.CONFIG_TABLE.' SET value="'.addslashes(serialize($mb_conf_db)).'" WHERE param="blk_'.addslashes($menu->get_id()).'" LIMIT 1'; pwg_query($query); } make_consecutive( $mb_conf ); foreach ($mb_conf as $id => $pos ) { $template->append( 'blocks', array( 'pos' => $pos/5, 'reg' => $reg_blocks[$id] ) ); } $template->set_filename( 'menubar_admin_content', 'menubar.tpl' ); $template->assign_var_from_handle( 'ADMIN_CONTENT', 'menubar_admin_content'); ?>