/** * Returns the repetition Ical rule. * * @return string|null */ public function getRepetitionICalRrule() { if (!($repetitionId = $this->getRepetitionId())) { return null; } else { $repetition = PcRepetitionPeer::retrieveByPk($repetitionId); if (!$repetition->needsParam()) { return $repetition->getIcalRrule(); } else { $repetitionParam = $this->getRepetitionParam(); if ($repetition->getSpecial() != 'selected_wkdays') { return str_replace('X', $repetitionParam, $repetition->getIcalRrule()); } else { $weekdaysSet = DateFormat::fromIntegerToWeekdaysSetForRepetition($repetitionParam); $selectedWeekdays = array(); foreach ($weekdaysSet as $k => $v) { if ($v) { $selectedWeekdays[] = PcUtils::fromAbbreviationToIcalAbbreviation($k); } } $weekdays = implode(",", $selectedWeekdays); return str_replace('X', $weekdays, $repetition->getIcalRrule()); } } } }