X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_userFilter.inc;h=2c4a5649b1ee22ebe44782f8c7a6d40da5642d33;hb=1069c3be6d2a5b9cf96c8decbc6bb95d42da32cc;hp=a96e1b877347184d76cb14eb71f2d1cb4cc16fb0;hpb=2239cac6b3bc84fbdf54eb0adc1dda0d0b6659e8;p=gosa.git diff --git a/gosa-core/include/class_userFilter.inc b/gosa-core/include/class_userFilter.inc index a96e1b877..2c4a5649b 100644 --- a/gosa-core/include/class_userFilter.inc +++ b/gosa-core/include/class_userFilter.inc @@ -5,14 +5,11 @@ class userFilter extends plugin public $pathTitle= "Filter"; public $filters = array(); - protected $availableCategories = array(); public $objectclasses = array('gosaProperties'); public $attributes = array('gosaUserDefinedFilter'); public $gosaUserDefinedFilter = array(); - private $listing = NULL; - private $fixedFilter = NULL; /*! \brief Returns true if we are able to read and write userFilters * (schema has to be present, gosaProperties) @@ -38,17 +35,13 @@ class userFilter extends plugin plugin::plugin($config, $ui->dn); $this->listing = &$listing; $filter= $this->listing->getFilter(); - $this->fixedFilter = $filter->getFixedFilters(); - - // Keep list of currently managed categories. - $this->availableCategories = array_unique($this->listing->categories); // Load list of filters if(isset($this->attrs['gosaUserDefinedFilter'])){ for($i=0; $i< $this->attrs['gosaUserDefinedFilter']['count']; $i++){ $tmp = userFilter::explodeFilterString($this->attrs['gosaUserDefinedFilter'][$i]); - if(isset($tmp['name'])){ - $this->filters[$tmp['name']]= $tmp; + if(isset($tmp['tag'])){ + $this->filters[$tmp['tag']]= $tmp; } } } @@ -88,17 +81,19 @@ class userFilter extends plugin // Get filters and their backends $queries = array(); foreach(split(",", $filterList) as $data){ - list($filter, $backend) = preg_split('/:/', $data); - $queries[] = array('backend' => $backend, 'filter' => base64_decode($filter)); + if(!empty($data)){ + list($filter, $backend) = preg_split('/:/', $data); + $queries[] = array('backend' => $backend, 'filter' => base64_decode($filter)); + } } // build up filter entry. $tmp = array( 'parent' => $parent, - 'name' => $name, + 'tag' => $name, 'categories' => $categories, 'description' => base64_decode($description), - 'queries' => $queries, + 'query' => $queries, 'flags' => $flags); return($tmp); @@ -116,8 +111,8 @@ class userFilter extends plugin $data[$name] = array('data' => array( $filter['parent'], - $filter['name'], - $filter['description'], + $filter['tag'], + htmlentities($filter['description'], ENT_COMPAT, 'UTF-8'), implode(", ",$filter['categories']), implode(", ",$filter['flags']))); } @@ -176,13 +171,13 @@ class userFilter extends plugin if($action['action'] == 'edit' && count($action['targets']) == 1){ $key= $this->filterWidget->getKey($action['targets'][0]); if(isset($this->filters[$key])){ - $this->dialog=new userFilterEditor($this->filters[$key], $this->availableCategories, $this->fixedFilter); + $this->dialog=new userFilterEditor($this->filters[$key], $this->listing); } } // Act on new requests if(isset($_POST['addFilter'])){ - $this->dialog=new userFilterEditor(array(), $this->availableCategories, $this->fixedFilter); + $this->dialog=new userFilterEditor(array(), $this->listing); } // Act on remove requests @@ -213,6 +208,7 @@ class userFilter extends plugin static function getFilter($category=array()) { global $config; + $ldap=$config->get_ldap_link(); $ui = get_userinfo(); $ldap->cd($config->current['BASE']); @@ -221,25 +217,23 @@ class userFilter extends plugin while($attrs = $ldap->fetch()){ for($i=0; $i < $attrs['gosaUserDefinedFilter']['count']; $i++){ $tmp = userFilter::explodeFilterString($attrs['gosaUserDefinedFilter'][$i]); - if(!isset($tmp['name'])) continue; + if(!isset($tmp['tag'])) continue; // Remove line breaks from the filter, which may were added for better reading. - $c = preg_split('/\n/',$tmp['filter']); - - foreach($c as $key => $str) $c[$key] = trim($str); - $tmp['filter'] = implode($c); + foreach($tmp['query'] as $key => $query){ + $c = preg_split('/\n/',$query['filter']); + foreach($c as $cKey => $str) $c[$cKey] = trim($str); + $tmp['query'][$key]['filter'] = mb_convert_encoding(implode($c),'UTF-8'); + } // The filter is visible if it is shared or if is one of our own creations. // ... and enabled. $visible = in_array('enable', $tmp['flags']) && ($attrs['dn'] == $ui->dn || in_array('share', $tmp['flags'])); - // Convert filter encoding - $tmp['filter'] = mb_convert_encoding($tmp['filter'], 'UTF-8'); - // Add filter if it matches the category list if($visible && (count($category) == 0 || array_intersect($category, $tmp['categories']))){ - $filter[$tmp['name']] = $tmp; + $filter[$tmp['tag']] = $tmp; } } } @@ -256,11 +250,11 @@ class userFilter extends plugin foreach($this->filters as $filter){ $tmp = $filter['parent'].";"; $tmp.= implode(',', $filter['categories']).";"; - $tmp.= $filter['name'].";"; + $tmp.= $filter['tag'].";"; $tmp.= base64_encode($filter['description']).";"; // Add queries - foreach($filter['queries'] as $query){ + foreach($filter['query'] as $query){ $tmp.= base64_encode($query['filter']).":".$query['backend'].","; } $tmp = trim($tmp,",").";";