The method I use for this is to override the page callback and then provide my own custom code for manipulating the view. Here's an example:
$view = views_get_view('profile_listing');
// The display name is has been renamed in a a features export. It's more likely to be page_1 or block_1, something along those lines.
$view->set_display('page_profile_listing');
if (some condition) {
$date_filter = array(
'date_filter' => array(
'operator' => '>=',
'value' => array(
'value' => NULL,
'min' => NULL,
'max' => NULL,
'default_date' => 'now -7 days',
'default_to_date' => '',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'date_fields' => array(
'node_data_field_feature_updated_date.field_feature_updated_date_value' => 'node_data_field_feature_updated_date.field_feature_updated_date_value',
),
'date_method' => 'OR',
'granularity' => 'day',
'form_type' => 'date_select',
'default_date' => 'now -7 days',
'default_to_date' => '',
'year_range' => '-3:+3',
'id' => 'date_filter',
'table' => 'node',
'field' => 'date_filter',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
);
$existing_filters = $view->display_handler->get_option('filters');
$view->display_handler->override_option('filters', array_merge($existing_filters, $date_filter));
}
return $view->execute_display('page_profile_listing');
The actual filter I'm adding is nonsensical in this case (it's just copied/pasted from somewhere else I'm doing this). You can get the specific filter you need to add by adding it to the view, using the export function, and finding that specific filter in your export code.
Hope this all makes sense, feel free to ask for more details if you need it.