restore filter when coming back from user edit
This commit is contained in:
parent
ec40c54cb9
commit
edeac37af3
|
@ -76,11 +76,8 @@ class lamList {
|
|||
/** LDAP entries */
|
||||
protected $entries;
|
||||
|
||||
/** filter string to include in URL */
|
||||
protected $filterText;
|
||||
|
||||
/** LDAP filter part which was entered by user via filter boxes */
|
||||
protected $filterPart = '';
|
||||
/** list of filters (attribute name => filter input) */
|
||||
protected $filters = array();
|
||||
|
||||
/** list of possible LDAP suffixes(organizational units) */
|
||||
protected $possibleSuffixes;
|
||||
|
@ -206,9 +203,11 @@ class lamList {
|
|||
* Builds the regular expressions from the filter values.
|
||||
*/
|
||||
protected function listBuildFilter() {
|
||||
if (isset($_GET['accountEditBack'])) {
|
||||
return;
|
||||
}
|
||||
$filter = array();
|
||||
$filterParam = "";
|
||||
$LDAPFilterPart = "";
|
||||
$this->filters = array();
|
||||
if (!isset($_POST['clear_filter'])) {
|
||||
// build filter array
|
||||
for ($i = 0; $i < sizeof($this->attrArray); $i++) {
|
||||
|
@ -221,8 +220,7 @@ class lamList {
|
|||
}
|
||||
if (isset($foundFilter) && ($foundFilter != '')) {
|
||||
if (preg_match('/^([\p{L}\p{N} _\\*\\$\\.@-])+$/iu', $foundFilter)) { // \p{L} matches any Unicode letter
|
||||
$filterParam .= "&filter" . $this->attrArray[$i] . '=' . $foundFilter;
|
||||
$LDAPFilterPart .= '(' . $this->attrArray[$i] . '=' . $foundFilter . ')';
|
||||
$this->filters[strtolower($this->attrArray[$i])] = $foundFilter;
|
||||
}
|
||||
else {
|
||||
StatusMessage('ERROR', _('Please enter a valid filter. Only letters, numbers and " _*$.@-" are allowed.'), htmlspecialchars($foundFilter));
|
||||
|
@ -230,8 +228,6 @@ class lamList {
|
|||
}
|
||||
}
|
||||
}
|
||||
$this->filterText = $filterParam;
|
||||
$this->filterPart = $LDAPFilterPart;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -273,6 +269,7 @@ class lamList {
|
|||
* @param integer $count number of account entries
|
||||
*/
|
||||
protected function listDrawNavigationBar($count) {
|
||||
$filter = $this->getFilterAsTextForURL();
|
||||
echo("<table width=\"100%\" border=\"0\">\n");
|
||||
echo("<tr>\n");
|
||||
echo("<td align=\"left\">");
|
||||
|
@ -283,12 +280,12 @@ class lamList {
|
|||
echo("<td class=\"activepage\" align=\"right\">");
|
||||
if ($this->page != 1) {
|
||||
echo("<a title=\"" . _('Jump to first page') . "\" href=\"list.php?type=" . $this->type . "&norefresh=true&page=1" .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $this->filterText . "\">" .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $filter . "\">" .
|
||||
"<img height=16 width=16 class=\"align-middle\" alt=\"\" src=\"../../graphics/go-first.png\"></a>\n");
|
||||
}
|
||||
if ($this->page > 10) {
|
||||
echo("<a title=\"" . _('Jump 10 pages backward') . "\" href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($this->page - 10) .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $this->filterText . "\">" .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $filter . "\">" .
|
||||
"<img height=16 width=16 class=\"align-middle\" alt=\"\" src=\"../../graphics/go-previous.png\"></a>\n");
|
||||
}
|
||||
for ($i = $this->page - 6; $i < ($this->page + 5); $i++) {
|
||||
|
@ -303,17 +300,17 @@ class lamList {
|
|||
}
|
||||
else {
|
||||
echo " <a href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($i + 1) .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $this->filterText . "\">" . ($i + 1) . "</a>\n";
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $filter . "\">" . ($i + 1) . "</a>\n";
|
||||
}
|
||||
}
|
||||
if ($this->page < (($count / $this->maxPageEntries) - 10)) {
|
||||
echo("<a title=\"" . _('Jump 10 pages forward') . "\" href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($this->page + 10) .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $this->filterText . "\">" .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $filter . "\">" .
|
||||
"<img height=16 width=16 class=\"align-middle\" alt=\"\" src=\"../../graphics/go-next.png\"></a>\n");
|
||||
}
|
||||
if ($this->page < ($count / $this->maxPageEntries)) {
|
||||
echo("<a title=\"" . _('Jump to last page') . "\" href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ceil(($count / $this->maxPageEntries)) .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $this->filterText . "\">" .
|
||||
"&sort=" . $this->sortColumn . "&sortdirection=" . $this->sortDirection . $filter . "\">" .
|
||||
"<img height=16 width=16 class=\"align-middle\" alt=\"\" src=\"../../graphics/go-last.png\"></a>\n");
|
||||
}
|
||||
echo "</td>";
|
||||
|
@ -321,10 +318,24 @@ class lamList {
|
|||
echo "</tr></table>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the filter as text to be used as URL parameter.
|
||||
*
|
||||
* @return String filter text
|
||||
*/
|
||||
protected function getFilterAsTextForURL() {
|
||||
$text = '';
|
||||
foreach ($this->filters as $attr => $filter) {
|
||||
$text .= "&filter" . strtolower($attr) . '=' . $filter;
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the attribute and filter row at the account table head
|
||||
*/
|
||||
protected function listPrintTableHeader() {
|
||||
$filter = $this->getFilterAsTextForURL();
|
||||
// print table header
|
||||
echo "<table id=\"accountTable\" frame=\"box\" rules=\"none\" class=\"" . $this->type . "-border collapse accountlist ui-corner-all\" width=\"100%\"><thead>\n";
|
||||
echo "<tr class=\"" . $this->type . "-dark\">\n<th width=22 height=34></th>\n<th></th>\n";
|
||||
|
@ -336,11 +347,11 @@ class lamList {
|
|||
$sortImage = "sort_desc.png";
|
||||
}
|
||||
echo "<th align=\"left\"><a href=\"list.php?type=" . $this->type . "&".
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $this->filterText . "&norefresh=y" . "\">" . $this->descArray[$k] .
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $filter . "&norefresh=y" . "\">" . $this->descArray[$k] .
|
||||
" <img height=16 width=16 style=\"vertical-align: middle;\" src=\"../../graphics/$sortImage\" alt=\"sort direction\"></a></th>\n";
|
||||
}
|
||||
else echo "<th align=\"left\"><a href=\"list.php?type=" . $this->type . "&".
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $this->filterText . "&norefresh=y" . "\">" . $this->descArray[$k] . "</a></th>\n";
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $filter . "&norefresh=y" . "\">" . $this->descArray[$k] . "</a></th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
|
@ -354,7 +365,7 @@ class lamList {
|
|||
$filterButton = new htmlButton('apply_filter', 'filter.png', true);
|
||||
$filterButton->setTitle(_("Filter"));
|
||||
$filterGroup->addElement($filterButton);
|
||||
if (isset($this->filterPart) && ($this->filterPart != '')) {
|
||||
if (sizeof($this->filters) > 0) {
|
||||
$filterGroup->addElement(new htmlSpacer('1px', null));
|
||||
$clearFilterButton = new htmlButton('clear_filter', 'clearFilter.png', true);
|
||||
$clearFilterButton->setTitle(_('Clear filter'));
|
||||
|
@ -368,11 +379,8 @@ class lamList {
|
|||
if ($this->canBeFiltered($this->attrArray[$k])) {
|
||||
$value = "";
|
||||
if (!isset($_POST['clear_filter'])) {
|
||||
if (isset($_GET["filter" . strtolower($this->attrArray[$k])])) {
|
||||
$value = $_GET["filter" . strtolower($this->attrArray[$k])];
|
||||
}
|
||||
if (isset($_POST["filter" . strtolower($this->attrArray[$k])])) {
|
||||
$value = $_POST["filter" . strtolower($this->attrArray[$k])];
|
||||
if (isset($this->filters[strtolower($this->attrArray[$k])])) {
|
||||
$value = $this->filters[strtolower($this->attrArray[$k])];
|
||||
}
|
||||
}
|
||||
$filterInput = new htmlInputField('filter' . strtolower($this->attrArray[$k]), $value);
|
||||
|
@ -836,6 +844,10 @@ class lamList {
|
|||
* Sets some internal parameters.
|
||||
*/
|
||||
protected function listGetParams() {
|
||||
if (isset($_GET['accountEditBack'])) {
|
||||
$this->refresh = true;
|
||||
return;
|
||||
}
|
||||
// check if only PDF should be shown
|
||||
if (isset($_GET['printPDF'])) {
|
||||
$this->showPDFPage(null);
|
||||
|
@ -888,7 +900,7 @@ class lamList {
|
|||
}
|
||||
// configure search filter
|
||||
$module_filter = get_ldap_filter($this->type); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . $this->filterPart . ")";
|
||||
$filter = "(&" . $module_filter . $this->buildLDAPAttributeFilter() . ")";
|
||||
$attrs = $this->attrArray;
|
||||
// remove virtual attributes from list
|
||||
for ($i = 0; $i < sizeof($attrs); $i++) {
|
||||
|
@ -914,6 +926,19 @@ class lamList {
|
|||
$this->possibleSuffixes = $typeObj->getSuffixList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the LDAP filter based on the filter entries in the GUI.
|
||||
*
|
||||
* @return String LDAP filter
|
||||
*/
|
||||
protected function buildLDAPAttributeFilter() {
|
||||
$text = '';
|
||||
foreach ($this->filters as $attr => $filter) {
|
||||
$text .= '(' . $attr . '=' . $filter . ')';
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Forces a refresh of the LDAP data.
|
||||
* Function must be called before $this->refresh option is checked to load new LDAP data (e.g. in listGetParams).
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||
Copyright (C) 2003 - 2012 Roland Gruber
|
||||
Copyright (C) 2003 - 2013 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -826,7 +826,7 @@ class accountContainer {
|
|||
if (isset($_POST['accountContainerBackToList'])) {
|
||||
// Return to account list
|
||||
unset($_SESSION[$this->base]);
|
||||
metaRefresh("../lists/list.php?type=" . $this->type);
|
||||
metaRefresh("../lists/list.php?type=" . $this->type . '&accountEditBack=true');
|
||||
exit;
|
||||
}
|
||||
// create PDF file
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2009 - 2012 Pozdnyak Pavel
|
||||
2010 - 2012 Roland Gruber
|
||||
2010 - 2013 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -168,7 +168,7 @@ class lamAsteriskExtList extends lamList {
|
|||
parent::listRefreshData();
|
||||
// configure search filter
|
||||
$module_filter = get_ldap_filter($this->type); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . $this->filterPart . ")";
|
||||
$filter = "(&" . $module_filter . $this->buildLDAPAttributeFilter() . ")";
|
||||
$attrs = $this->attrArray;
|
||||
$attrs[] = "astpriority";
|
||||
$entries = searchLDAP($this->suffix, $filter, $attrs);
|
||||
|
|
Loading…
Reference in New Issue