Ok, I dived into the drupal variables with the help of the devel module and came up with a solution (first version, see better version below the edit):
I now parsing all dates directly from the content in my specific node--event.tpl.php
. I then iterate through them and store all dates that are in the past in a new array. In the end, if that array contains any values and my new option is activated (differentiating between teaser and full display), I remove those past-dates from the date-field array in the content:
<?php
// remove dates in the past from the date-field if enabled
if (isset($node->field_hide_past_dates) && !empty($node->field_hide_past_dates)) {
$option = $node->field_hide_past_dates['und'][0]['value'];
if (($option == "teaser" && $teaser) || $option == "always") {
$UTC = new DateTimeZone("UTC");
$now_utc_datetime = new DateTime( "now", $UTC );
$past_date_array = array();
foreach($content['field_eventdate']['#items'] AS $date_array) {
$to_date_utc_string = $date_array['value2'];
$to_date_utc_datetime = date_create_from_format("Y-m-d H:i:s", $to_date_utc_string, $UTC);
if ($to_date_utc_datetime < $now_utc_datetime) {
array_push($past_date_array, $date_array);
}
}
if (count($past_date_array) > 0) {
$only_future_date_array = array_filter($content['field_eventdate']['#items'], function ($var) use ($past_date_array) {
return !in_array($var, $past_date_array);
});
$content['field_eventdate']['#items'] = $only_future_date_array;
}
}
}
?>
Maybe there is a cleaner way of preprocessing the content (let me know), but this was the quickest I could come up with and I now have the option per-node.
== EDIT ==
Why make it complicated: I forgot about hiding fields, so no more array-assigning, just on-the-fly hiding of past-dates:
if (isset($node->field_hide_past_dates) && !empty($node->field_hide_past_dates)) {
$option = $node->field_hide_past_dates['und'][0]['value'];
if (($option == "teaser" && $teaser) || $option == "always") {
$UTC = new DateTimeZone("UTC");
$now_utc_datetime = new DateTime( "now", $UTC );
foreach($content['field_eventdate']['#items'] AS $key => $date_array) {
$to_date_utc_string = $date_array['value2'];
$to_date_utc_datetime = date_create_from_format("Y-m-d H:i:s", $to_date_utc_string, $UTC);
if ($to_date_utc_datetime < $now_utc_datetime) {
hide($content['field_eventdate'][$key]);
}
}
}
}