index b193210ecdeb6c407503f835a410849098a393ee..83b6c85cafa53702aa672837d1f8a9068c650169 100644 (file)
public $objectClass = array('gosaProperties');
public $attributes = array('gosaUserDefinedFilter');
public $gosaUserDefinedFilter = array();
+
+
+ /*! \brief Returns true if we are able to read and write userFilters
+ * (schema has to be present, gosaProperties)
+ */
+ static function userFilteringAvailable()
+ {
+ if(!session::is_set('userFilter::userFilteringAvailable')){
+ global $config;
+ $ldap = $config->get_ldap_link();
+ $ocs = $ldap->get_objectclasses();
+ session::set('userFilter::userFilteringAvailable', isset($ocs['gosaProperties']));
+ }
+ return(session::get('userFilter::userFilteringAvailable'));
+ }
/*! \brief Initiates the filter editing dialog.
// Keep list of currently managed categories.
$this->availableCategories = array_unique($categories);
- $this->availableCategories[] = 'systems';
- $this->availableCategories[] = 'phones';
- $this->availableCategories[] = 'printer';
- $this->availableCategories[] = 'component';
// Load list of filters
if(isset($this->attrs['gosaUserDefinedFilter'])){
for($i=0; $i < $attrs['gosaUserDefinedFilter']['count']; $i++){
$tmp = userFilter::explodeFilterString($attrs['gosaUserDefinedFilter'][$i]);
if(!isset($tmp['name'])) 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);
+
// 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;