public function getByDayAsText($byDay, $listSeparator = 'and')
{
if (empty($byDay)) {
return '';
}
$map = array('SU' => null, 'MO' => null, 'TU' => null, 'WE' => null, 'TH' => null, 'FR' => null, 'SA' => null);
$dayNames = $this->translator->trans('day_names');
$timestamp = mktime(1, 1, 1, 1, 12, 2014);
// A Sunday
foreach (array_keys($map) as $short) {
$long = $dayNames[date('w', $timestamp)];
$map[$short] = $long;
$timestamp += 86400;
}
$numOrdinals = 0;
foreach ($byDay as $key => $short) {
$day = strtoupper($short);
$string = '';
if (preg_match('/([+-]?)([0-9]*)([A-Z]+)/', $short, $parts)) {
$symbol = $parts[1];
$nth = $parts[2];
$day = $parts[3];
if (!empty($nth)) {
++$numOrdinals;
$string .= $this->getOrdinalNumber($symbol == '-' ? -$nth : $nth);
}
}
if (!isset($map[$day])) {
throw new \RuntimeException("byDay {$short} could not be transformed");
}
if (!empty($string)) {
$string .= ' ';
}
$byDay[$key] = ltrim($string . $map[$day]);
}
$output = $numOrdinals ? $this->translator->trans('the_for_weekday') . ' ' : '';
if ($output == ' ') {
$output = '';
}
$output .= $this->getListStringFromArray($byDay, $listSeparator);
return $output;
}