echo xml_escape($winner['firstname'] . ' ' . $winner['surname']);
            } else {
                echo ' ';
            }
            ?>
</li><?php 
        }
        ?>
</ol><?php 
    }
    if (!$Crossword['expired']) {
        if (null !== $Crossword['expiry']) {
            $now = new Academic_time(time());
            $expiry = new Academic_time($Crossword['expiry']);
            $units = array('week' => array('weeks', 'week'), 'day' => array('days', 'day'), 'hour' => array('hours', 'hour'), 'min' => array('minutes', 'minute'), 'sec' => array('seconds', 'second'));
            $diff = Academic_time::DescribeDifference($units, Academic_time::Difference($now, $expiry, array_keys($units)), 2);
            ?>
<div class="expiry_time"><?php 
            echo 'solutions available in:';
            ?>
<br /><?php 
            echo join(', ', $diff);
            ?>
</div><?php 
        }
    }
    ?>
</div><?php 
}
?>
<h2><?php 
<a href="<?php 
    echo site_url('crosswords/' . $crossword['id']);
    ?>
"><?php 
    ?>
<img alt="" src="<?php 
    echo site_url('crosswords/' . $crossword['id'] . '/preview');
    ?>
" /><?php 
    ?>
</a><?php 
    ?>
</div><?php 
    // Find if crossword is "new"
    $now = new Academic_time(time());
    $since_publication = Academic_time::Difference($pub, $now, array('days'));
    if (!$crossword['expired'] || $since_publication['days'] < 7) {
        ?>
<div class="crossword_new">new!</div><?php 
    }
    // Title and details
    ?>
<div class="crossword_title"><?php 
    ?>
<a href="<?php 
    echo site_url('crosswords/' . $crossword['id']);
    ?>
"><?php 
    echo $pub->Format('D ') . $pub->AcademicTermNameUnique() . ' week ' . $pub->AcademicWeek();
    ?>
</a><?php 
 static function calculate_duration($start, $end)
 {
     $duration = Academic_time::Difference($start, $end, array('days'));
     return array('days' => $duration['days'], 'time' => date('H:i', $end->Timestamp()));
 }