Code

We're html5, right?
[gosa.git] / gosa-core / include / class_userFilter.inc
index 2bcf9ffd4912122f3d6c0008b8c06e357f84b96f..b1ee8224726524993d36f576a5a0143750d94b8a 100644 (file)
@@ -40,8 +40,8 @@ class userFilter extends plugin
     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; 
         }
       }
     }
@@ -62,13 +62,13 @@ class userFilter extends plugin
    */
   static function explodeFilterString($filterStr)
   {
-    list($parent,$categories, $name, $description, $filterList, $flags) = split(";", $filterStr);
+    list($parent,$categories, $name, $description, $filterList, $flags) = preg_split('/;/', $filterStr);
 
     // Ensure that we no empty category in our category list.
     if(empty($categories)){
       $categories = array();
     }else{
-      $categories = split(',', $categories);
+      $categories = preg_split('/,/', $categories);
     }
 
     // Ensure that we no empty entry in out flags list.
@@ -80,18 +80,20 @@ 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));
+    foreach(preg_split('/,/', $filterList) as $data){
+      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);
@@ -109,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'])));
     }
@@ -206,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']);
@@ -214,13 +217,13 @@ 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. 
-        foreach($tmp['queries'] as $key => $query){
+        foreach($tmp['query'] as $key => $query){
           $c = preg_split('/\n/',$query['filter']);
-          foreach($c as $key => $str) $c[$key] = trim($str);
-          $tmp['queries'][$key]['filter'] = implode($c);
+          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.
@@ -228,12 +231,9 @@ class userFilter extends plugin
         $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;
         }
       }
     }
@@ -250,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,",").";";