/** * Редактируем события * @param Calendar_Event $event * @return bool */ public function edit(Calendar_Event $event) { $eventArray = Calendar_Model::getByChain($this->_user, $event->getChain()); if (count($eventArray) == 0) { $this->_errors[] = "Событие не найдено"; } // Если повторять каждый день if ($event->getEvery() == 1) { $arrayDays = $this->_repeat($event, 'day'); // Неделя } elseif ($event->getEvery() == 7) { $arrayDays = $this->_repeat($event, 'week'); // Месяц } elseif ($event->getEvery() == 30) { $arrayDays = $this->_repeat($event, 'month'); // Квартал (сейчас не работает!) } elseif ($event->getEvery() == 90) { $arrayDays = $this->_repeat($event, '3 month'); // Год } elseif ($event->getEvery() == 365) { $arrayDays = $this->_repeat($event, 'year'); // Без повторения } else { $arrayDays = array($event->getDate()); } if (count($this->getErrors()) == 0) { // Сперва удаляем все подтверждённые, затем создаём новые :) if ($this->deleteEvents($event->getChain())) { $model = Calendar_Model::update($this->_user, $event, $arrayDays); } } else { return false; } return true; }
/** * Обновляет события * @param oldUser $user * @param Calendar_Event $event * @param array $array * @return bool */ public static function update(oldUser $user, Calendar_Event $event, $array) { // Создаём само событие $sql = "UPDATE calendar_chains c\n SET `last` = ?, `every` = ?, `repeat` = ?, `week` = ?\n WHERE `user_id` = ? AND id = ? ;"; // Создаём событие в календаре Core::getInstance()->db->query($sql, $event->getLast(), $event->getEvery(), $event->getRepeat(), $event->getWeek(), $user->getId(), $event->getChain()); // Возвращает даты подтверждённых в этой серии $accepted = self::loadAcceptedByChain($user, $event->getChain()); // Создаём повторы события $arrayDays = array(); foreach ($array as $value) { if (in_array($value, $accepted)) { continue; } $arrayDays[] = $value; } return self::createOperations($user, $event, $event->getChain(), $arrayDays); }