From 2bed69d6b9d0581f77035837e14d0a9ea0c08572 Mon Sep 17 00:00:00 2001 From: avl Date: Wed, 27 Jan 2010 16:19:39 +0200 Subject: [PATCH] 12 --- ipf/admin/model.php | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/ipf/admin/model.php b/ipf/admin/model.php index 46c6684..a030972 100644 --- a/ipf/admin/model.php +++ b/ipf/admin/model.php @@ -77,27 +77,33 @@ class ListTreeFilter extends BaseListFilter{ parent::__construct($title, $choices); } + protected function _collectTreeRecursive(&$choices,$level=0,$parent_id=null,$valname=''){ foreach($this->fields[$level]['objects'] as $o){ - if ($level>0){ - $foreign = $this->fields[$level]['parent_key']; - if ($parent_id!=$o->$foreign) - continue; - } - $name = str_repeat("-", $level).$o->name; - $id = $valname.$o->id; - $choices[] = array( - 'id'=>$id, - 'param'=>'filter_'.$this->name.'='.$id, - 'name'=>$name, - 'selected'=>false, - ); - if ($level<(count($this->fields)-1)){ - $this->_collectTreeRecursive(&$choices,$level+1,$o->id,$valname.$o->id.'.'); - } + if ($level>0){ + $foreign = $this->fields[$level]['parent_key']; + if ($parent_id!=$o->$foreign) + continue; + } + $this->_addObject($o, &$choices, $level, $parent_id, $valname); + if ($level<(count($this->fields)-1)){ + $this->_collectTreeRecursive(&$choices,$level+1,$o->id,$valname.$o->id.'.'); + } } } + protected function _addObject($o, &$choices, $level, $parent_id, $valname) + { + $name = str_repeat("-", $level).$o->name; + $id = $valname.$o->id; + + $choices[] = array( + 'id'=>$id, + 'param'=>'filter_'.$this->name.'='.$id, + 'name'=>$name, + 'selected'=>false, + ); + } function SetSelect($request){ $sel_id = @$request->GET['filter_'.$this->name]; foreach($this->choices as &$ch){ -- 2.49.0