haveAuthInfo())
pla_error( $lang['not_enough_login_info'] );
// Output format, table or list?
$result_formats = array( 'list', 'table' );
$format = isset( $_GET['format'] ) ? $_GET['format'] : get_default_search_display();
if( ! in_array( $format, $result_formats ) )
$format = 'list';
// build the server drop-down html and JavaScript array (for base_dns)
$js_on_change_string = '';
if( isset( $_GET['form'] ) && $_GET['form'] == 'advanced' )
$js_on_change_string =
'onChange="document.forms[0].base_dn.value=servers[document.forms[0].server_id.value].base_dn"';
$server_menu_html = server_select_list($server_id,true,'server_id',$js_on_change_string);
$server_info_list = server_info_list();
$filter = isset( $_GET['filter'] ) ? clean_search_vals($_GET['filter']) : null;
$attr = isset( $_GET['attribute'] ) ? $_GET['attribute'] : null;
// grab the base dn for the search
if( isset( $_GET['base_dn'] ) && $_GET['base_dn'] ) {
$base_dn = $_GET['base_dn'];
$base_dn_is_invalid = false;
$base_dn_does_not_exist = false;
if( trim( $base_dn ) )
if( ! is_dn_string( $base_dn ) )
$base_dn_is_invalid = true;
elseif( ! dn_exists( $ldapserver, $base_dn ) )
$base_dn_does_not_exist = true;
$base_dns = array($base_dn);
} else
$base_dns = $ldapserver->getBaseDN();
$criterion = isset( $_GET['criterion'] ) ? $_GET['criterion'] : null;
$form = isset( $_GET['form'] ) ? $_GET['form'] : null;
$scope = isset( $_GET['scope'] ) ? $_GET['scope'] : 'sub';
include './header.php'; ?>
haveAuthInfo() ) {
$login_url = sprintf('login_form.php?server_id=%s&redirect=%s',
$server_id,rawurlencode($_SERVER['REQUEST_URI'])); ?>
.
" . $lang['searching'] . "\n";
flush();
// prevent script from bailing early on a long delete
@set_time_limit( 0 );
// grab the size limit set in config.php
$size_limit = isset ( $search_result_size_limit ) && is_numeric( $search_result_size_limit ) ?
$search_result_size_limit : 50;
// Sanity check
if( $size_limit < 1 )
$size_limit = 1;
$page = isset( $_GET['page'] ) ? $_GET['page'] : 0;
$time_start = utime();
$time_elapsed = 0;
foreach ($base_dns as $base_dn) {
if (! dn_exists( $ldapserver, $base_dn ) ) {
debug_log(sprintf('BaseDN [%s] skipped as it doesnt exist in [%s].',$base_dn,$ldapserver->server_id),1);
continue;
} else {
debug_log(sprintf('Search with base DN [%s]',$base_dn),9);
}
if( $scope == 'base' )
$results = @ldap_read( $ldapserver->connect(false), $base_dn, $filter, $search_result_attributes,
0, 0, 0, get_search_deref_setting() );
elseif( $scope == 'one' )
$results = @ldap_list( $ldapserver->connect(false), $base_dn, $filter, $search_result_attributes,
0, 0, 0, get_search_deref_setting() );
else // scope == 'sub'
$results = @ldap_search( $ldapserver->connect(false), $base_dn, $filter, $search_result_attributes,
0, 0, 0, get_search_deref_setting() );
$errno = @ldap_errno( $ldapserver->connect(false) );
if( ! $results ) {
pla_error( $lang['error_performing_search'], ldap_error( $ldapserver->connect(false) ), ldap_errno( $ldapserver->connect(false) ) );
}
$time_end = utime();
$time_elapsed += round( $time_end - $time_start, 2 );
$count = @ldap_count_entries( $ldapserver->connect(), $results );
$start_entry = $page * $size_limit;
$end_entry = min( $start_entry + $size_limit + 1, $count+1 );
?>
" . $lang['size_limit_exceeded'] . "
\n";
}
// Draw the paging links
$pager_html = '';
$total_pages = $count / $size_limit;
$results_per_page = $size_limit;
if( $count > $size_limit ) {
echo sprintf( $lang['showing_results_x_through_y'], "" . number_format($start_entry+1) . "", "" . number_format($end_entry-1) . "" ) . "
\n";
$php_self = $_SERVER['PHP_SELF'];
if( $page != 0 ) {
$query_string = array_to_query_string( $_GET, array( 'page' ) );
$query_string .= '&page=' . ($page-1);
$pager_html .= "‹‹";
} else {
$pager_html .= "‹‹";
}
$pager_html .= ' ';
// for large search results where we page beyone the first 20 pages,
// print elipsis instead of making the pager be super wide.
$elipsis_printed = false;
for( $i=0; $i<$count; $i+=$size_limit ) {
$page_num = $i/$size_limit;
if( $count > $size_limit * 20 && abs( $page_num - $page ) > 10 ) {
if( ! $elipsis_printed ) {
$pager_html .= '... ';
$elipsis_printed = true;
}
} else if( $page == $page_num ) {
$pager_html .= '' . ($page_num + 1) . '';
$pager_html .= ' ';
$elipsis_printed = false;
} else {
$query_string = array_to_query_string( $_GET, array( 'page' ) );
$query_string .= '&page=' . $page_num;
$pager_html .= "" . ($page_num+1) . "";
$pager_html .= ' ';
$elipsis_printed = false;
}
}
if( $page+1 < $total_pages ) {
$query_string = array_to_query_string( $_GET, array( 'page' ) );
$query_string .= '&page=' . ($page+1);
$pager_html .= "››";
} else {
$pager_html .= "››";
}
}
if( 0 == $count )
echo '' . $lang['no_results'] . '
';
else {
echo '' . $pager_html . '
';
flush();
if( $format == 'list' )
// $lang['list'] - this is here so check_lang_files doesnt prompt us to remove this $lang variable.
include realpath( './search_results_list.php' );
elseif( $format == 'table' )
// $lang['table'] - this is here so check_lang_files doesnt prompt us to remove this $lang variable.
include realpath( './search_results_table.php' );
else
pla_error( sprintf( $lang['unrecoginzed_search_result_format'], htmlspecialchars( $format ) ) );
echo '
' . $pager_html . '';
}
} ?>
.