Beispiel #1
0
/**
 * Callback to add filters on top of the result set
 *
 * @param Form
 */
function callback_filter_userlist(&$Form)
{
    global $Settings, $current_User;
    $Form->hidden('filter', 'new');
    $Form->text('keywords', get_param('keywords'), 20, T_('Name'), '', 50);
    echo '<span class="nowrap">';
    $Form->checkbox('gender_men', get_param('gender_men'), T_('Men'));
    $Form->checkbox('gender_women', get_param('gender_women'), T_('Women'));
    echo '</span>';
    if (!is_admin_page()) {
        echo '<br />';
    }
    if (is_admin_page()) {
        // show this filters only on admin interface
        if ($current_User->check_perm('users', 'edit')) {
            // Show "Reported users" filter only for users with edit user permission
            $Form->checkbox('reported', get_param('reported'), T_('Reported users'));
            $Form->checkbox('custom_sender_email', get_param('custom_sender_email'), T_('Users with custom sender address'));
            $Form->checkbox('custom_sender_name', get_param('custom_sender_name'), T_('Users with custom sender name'));
        }
        $Form->select_input_array('account_status', get_param('account_status'), get_user_statuses(T_('All')), T_('Account status'));
        $GroupCache = new DataObjectCache('Group', true, 'T_groups', 'grp_', 'grp_ID', 'grp_name');
        $group_options_array = array('-1' => T_('All (Ungrouped)'), '0' => T_('All (Grouped)')) + $GroupCache->get_option_array();
        $Form->select_input_array('group', get_param('group'), $group_options_array, T_('User group'), '', array('force_keys_as_values' => true));
        echo '<br />';
    }
    if (user_country_visible()) {
        // Filter by country
        load_class('regional/model/_country.class.php', 'Country');
        load_funcs('regional/model/_regional.funcs.php');
        $CountryCache =& get_CountryCache(T_('All'));
        $Form->select_country('country', get_param('country'), $CountryCache, T_('Country'), array('allow_none' => true));
    }
    if (user_region_visible()) {
        // Filter by region
        echo '<span id="region_filter"' . (!regions_exist(get_param('country'), true) ? ' style="display:none"' : '') . '>';
        $Form->select_input_options('region', get_regions_option_list(get_param('country'), get_param('region')), T_('Region'));
        echo '</span>';
    }
    if (user_subregion_visible()) {
        // Filter by subregion
        echo '<span id="subregion_filter"' . (!subregions_exist(get_param('region'), true) ? ' style="display:none"' : '') . '>';
        $Form->select_input_options('subregion', get_subregions_option_list(get_param('region'), get_param('subregion')), T_('Sub-region'));
        echo '</span>';
    }
    if (user_city_visible()) {
        // Filter by city
        echo '<span id="city_filter"' . (!cities_exist(get_param('country'), get_param('region'), get_param('subregion'), true) ? ' style="display:none"' : '') . '>';
        $Form->select_input_options('city', get_cities_option_list(get_param('country'), get_param('region'), get_param('subregion'), get_param('city')), T_('City'));
        echo '</span>';
    }
    echo '<br />';
    $Form->interval('age_min', get_param('age_min'), 'age_max', get_param('age_max'), 3, T_('Age group'));
    echo '<br />';
    $criteria_types = param('criteria_type', 'array/integer');
    $criteria_values = param('criteria_value', 'array/string');
    if (count($criteria_types) == 0) {
        // Init one criteria fieldset for first time
        $criteria_types[] = '';
        $criteria_values[] = '';
    }
    foreach ($criteria_types as $c => $type) {
        $value = trim(strip_tags($criteria_values[$c]));
        if ($value == '' && count($criteria_types) > 1 && $c > 0) {
            // Don't display empty field again after filter request
            continue;
        }
        if ($c > 0) {
            // Separator between criterias
            echo '<br />';
        }
        $Form->output = false;
        $criteria_input = $Form->text('criteria_value[]', $value, 17, '', '', 50);
        $criteria_input .= get_icon('add', 'imgtag', array('rel' => 'add_criteria'));
        $Form->output = true;
        global $user_fields_empty_name;
        $user_fields_empty_name = T_('Select...');
        $Form->select('criteria_type[]', $type, 'callback_options_user_new_fields', T_('Specific criteria'), $criteria_input);
    }
    if (user_region_visible()) {
        // JS functions for AJAX loading of regions, subregions & cities
        ?>
<script type="text/javascript">
jQuery( '#country' ).change( function()
{
	var this_obj = jQuery( this );
	jQuery.ajax( {
	type: 'POST',
	url: '<?php 
        echo get_samedomain_htsrv_url();
        ?>
anon_async.php',
	data: 'action=get_regions_option_list&ctry_id=' + jQuery( this ).val(),
	success: function( result )
		{
			jQuery( '#region' ).html( ajax_debug_clear( result ) );
			if( jQuery( '#region option' ).length > 1 )
			{
				jQuery( '#region_filter' ).show();
			}
			else
			{
				jQuery( '#region_filter' ).hide();
			}
			load_subregions( 0 ); // Reset sub-regions
		}
	} );
} );

jQuery( '#region' ).change( function ()
{	// Change option list with sub-regions
	load_subregions( jQuery( this ).val() );
} );

jQuery( '#subregion' ).change( function ()
{	// Change option list with cities
	load_cities( jQuery( '#country' ).val(), jQuery( '#region' ).val(), jQuery( this ).val() );
} );

function load_subregions( region_ID )
{	// Load option list with sub-regions for seleted region
	jQuery.ajax( {
	type: 'POST',
	url: '<?php 
        echo get_samedomain_htsrv_url();
        ?>
anon_async.php',
	data: 'action=get_subregions_option_list&rgn_id=' + region_ID,
	success: function( result )
		{
			jQuery( '#subregion' ).html( ajax_debug_clear( result ) );
			if( jQuery( '#subregion option' ).length > 1 )
			{
				jQuery( '#subregion_filter' ).show();
			}
			else
			{
				jQuery( '#subregion_filter' ).hide();
			}
			load_cities( jQuery( '#country' ).val(), region_ID, 0 );
		}
	} );
}

function load_cities( country_ID, region_ID, subregion_ID )
{	// Load option list with cities for seleted region or sub-region
	jQuery.ajax( {
	type: 'POST',
	url: '<?php 
        echo get_samedomain_htsrv_url();
        ?>
anon_async.php',
	data: 'action=get_cities_option_list&ctry_id=' + country_ID + '&rgn_id=' + region_ID + '&subrg_id=' + subregion_ID,
	success: function( result )
		{
			jQuery( '#city' ).html( ajax_debug_clear( result ) );
			if( jQuery( '#city option' ).length > 1 )
			{
				jQuery( '#city_filter' ).show();
			}
			else
			{
				jQuery( '#city_filter' ).hide();
			}
		}
	} );
}
</script>
<?php 
    }
}
 /**
  * For use by Universal Item List widget
  */
 function get_option_array()
 {
     global $posttypes_reserved_IDs;
     return parent::get_option_array('get_name', $posttypes_reserved_IDs);
 }