added functions to filter account lists
This commit is contained in:
		
							parent
							
								
									a48e6ec6e9
								
							
						
					
					
						commit
						f6d7db5f07
					
				|  | @ -29,6 +29,62 @@ $Id$ | ||||||
| * @author Roland Gruber | * @author Roland Gruber | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  | * Builds the regular expressions from the filter values. | ||||||
|  | * | ||||||
|  | * @param array $post HTTP Post values | ||||||
|  | * @param array $attributes list of displayed attributes | ||||||
|  | * @return array filter data array($attribute => array('regex' => $reg, 'original' => $orig)) | ||||||
|  | * $reg is the regular expression to use, $orig the user's unmodified input string | ||||||
|  | */ | ||||||
|  | function listBuildFilter($post, $attributes) { | ||||||
|  | 	$filter = array(); | ||||||
|  | 	for ($i = 0; $i < sizeof($attributes); $i++) { | ||||||
|  | 		if (eregi('^([0-9a-z_\\*\\$])+$', $_POST["filter" . strtolower($attributes[$i])])) { | ||||||
|  | 			$filter[$attributes[$i]]['original'] = $_POST["filter" . strtolower($attributes[$i])]; | ||||||
|  | 			$filter[$attributes[$i]]['regex'] = $_POST["filter" . strtolower($attributes[$i])]; | ||||||
|  | 			// replace special characters
 | ||||||
|  | 			$filter[$attributes[$i]]['regex'] = str_replace("*", "(.)*", $filter[$attributes[$i]]['regex']); | ||||||
|  | 			$filter[$attributes[$i]]['regex'] = str_replace('$', '[$]', $filter[$attributes[$i]]['regex']); | ||||||
|  | 			// add string begin and end
 | ||||||
|  | 			$filter[$attributes[$i]]['regex'] = "^" . $filter[$attributes[$i]]['regex'] . "$"; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return $filter; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  | * Removes all entries which do not fit to the filter. | ||||||
|  | * | ||||||
|  | * @param array $entries list of accounts | ||||||
|  | * @param array $filter attribute filter | ||||||
|  | * @return array filtered list of accounts | ||||||
|  | */ | ||||||
|  | function listFilterAccounts($entries, $filter) { | ||||||
|  | 	$attributes = array_keys($filter); | ||||||
|  | 	for ($r = 0; $r < sizeof($entries); $r++) { | ||||||
|  | 		for ($a = 0; $a < sizeof($attributes); $a++) { | ||||||
|  | 			// check if filter fits
 | ||||||
|  | 			$found = false; | ||||||
|  | 			for ($i = 0; $i < sizeof($entries[$r][$attributes[$a]]); $i++) { | ||||||
|  | 				if (eregi($filter[$attributes[$a]]['regex'], $entries[$r][$attributes[$a]][$i])) { | ||||||
|  | 					$found = true; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			if (!$found) { | ||||||
|  | 				// remove account and reindex array
 | ||||||
|  | 				unset($entries[$r]); | ||||||
|  | 				$entries = array_values($entries); | ||||||
|  | 				$r--; | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return $entries; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| * Sorts an account list by a given attribute | * Sorts an account list by a given attribute | ||||||
|  | @ -94,7 +150,7 @@ function listDrawNavigationBar($count, $max_page_entries, $page, $sort, $searchF | ||||||
| 	echo("<tr>\n"); | 	echo("<tr>\n"); | ||||||
| 	echo("<td><input type=\"submit\" name=\"refresh\" value=\"" . _("Refresh") . "\">  "); | 	echo("<td><input type=\"submit\" name=\"refresh\" value=\"" . _("Refresh") . "\">  "); | ||||||
| 	if ($page != 1) { | 	if ($page != 1) { | ||||||
| 		echo("<a href=\"list" . $scope . "s.php?page=" . ($page - 1) . "&sort=" . $sort . $searchFilter . "\"><=</a>\n"); | 		echo("<a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($page - 1) . "&sort=" . $sort . $searchFilter . "\"><=</a>\n"); | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
| 		echo("<="); | 		echo("<="); | ||||||
|  | @ -102,7 +158,7 @@ function listDrawNavigationBar($count, $max_page_entries, $page, $sort, $searchF | ||||||
| 	echo(" "); | 	echo(" "); | ||||||
| 
 | 
 | ||||||
| 	if ($page < ($count / $max_page_entries)) { | 	if ($page < ($count / $max_page_entries)) { | ||||||
| 		echo("<a href=\"list" . $scope . "s.php?page=" . ($page + 1) . "&sort=" . $sort . $searchFilter . "\">=></a>\n"); | 		echo("<a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($page + 1) . "&sort=" . $sort . $searchFilter . "\">=></a>\n"); | ||||||
| 	} | 	} | ||||||
| 	else { | 	else { | ||||||
| 		echo("=></td>"); | 		echo("=></td>"); | ||||||
|  | @ -119,7 +175,7 @@ function listDrawNavigationBar($count, $max_page_entries, $page, $sort, $searchF | ||||||
| 			echo(" " . ($i + 1)); | 			echo(" " . ($i + 1)); | ||||||
| 		} | 		} | ||||||
| 		else { | 		else { | ||||||
| 			echo(" <a href=\"list" . $scope . "s.php?page=" . ($i + 1) . "&sort=" . $sort . "\">" . ($i + 1) . "</a>\n"); | 			echo(" <a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($i + 1) . "&sort=" . $sort . "\">" . ($i + 1) . "</a>\n"); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	echo("</td></tr></table>\n"); | 	echo("</td></tr></table>\n"); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue