index 46e1aec4482625845e980e0059c85dd04440ed99..a96e1b877347184d76cb14eb71f2d1cb4cc16fb0 100644 (file)
class userFilter extends plugin
{
- protected $filters = array();
+ public $pathTitle= "Filter";
+
+ public $filters = array();
protected $availableCategories = array();
public $objectclasses = array('gosaProperties');
}
// Create the filter list
- $this->filterWidget= new sortableListing();
+ $this->filterWidget= new sortableListing($this->filters, $this->convertFilterList());
$this->filterWidget->setDeleteable(true);
$this->filterWidget->setEditable(true);
$this->filterWidget->setWidth("100%");
$this->filterWidget->setHeight("270px");
- $this->filterWidget->setColspecs(array('100px', '200px', '100px', '70px','150px'));
+ $this->filterWidget->setHeader(array(_("Parent filter"),_("Name"),_("Description"),_("Category"),_("Options"),""));
+ $this->filterWidget->setColspecs(array('80px', '100px', '200px', '120px','150px'));
$this->filterWidget->setAcl($ui->get_permissions($ui->dn,'users/user','gosaUserDefinedFilter'));
- $this->filterWidget->setListData($this->filters, $this->convertFilterList());
}
/*! \brief Parses a filter string into an array.
*/
- static function explodeFilterString($filter)
+ static function explodeFilterString($filterStr)
{
- list($categories, $name, $description, $filter, $flags) = split(";", $filter);
+ list($parent,$categories, $name, $description, $filterList, $flags) = split(";", $filterStr);
// Ensure that we no empty category in our category list.
if(empty($categories)){
if(empty($flags)){
$flags = array();
}else{
- $flags = split(',', $flags);
+ $flags = preg_split('/,/', $flags);
+ }
+
+ // 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));
}
// build up filter entry.
$tmp = array(
+ 'parent' => $parent,
'name' => $name,
'categories' => $categories,
'description' => base64_decode($description),
- 'filter' => base64_decode($filter),
+ 'queries' => $queries,
'flags' => $flags);
return($tmp);
foreach($this->filters as $name => $filter){
$data[$name] = array('data' =>
array(
+ $filter['parent'],
$filter['name'],
$filter['description'],
implode(", ",$filter['categories']),
function execute()
{
plugin::execute();
+
+ // Let the filter widget update itself
+ $this->filterWidget->update();
// Cancel filter modifications (edit dialog)
if(isset($_POST['cancelFilterSettings'])){
// Build up new list of filters
$attrs = array();
foreach($this->filters as $filter){
- $tmp = implode(',', $filter['categories']).";";
+ $tmp = $filter['parent'].";";
+ $tmp.= implode(',', $filter['categories']).";";
$tmp.= $filter['name'].";";
$tmp.= base64_encode($filter['description']).";";
- $tmp.= base64_encode($filter['filter']).";";
+
+ // Add queries
+ foreach($filter['queries'] as $query){
+ $tmp.= base64_encode($query['filter']).":".$query['backend'].",";
+ }
+ $tmp = trim($tmp,",").";";
$tmp.= implode(',', $filter['flags']);
$attrs[] = $tmp;
}