/** * Редактируем события * @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 int $chain * @param array $arrayDays */ private function createOperations(oldUser $user, Calendar_Event $event, $chain, $arrayDays) { // Создаём повторы события в виде неподтверждённых операций $operationsArray = array(); foreach ($arrayDays as $value) { // @TODO Посмотреть, как можно адаптировать $event->__getArray() $operationsArray[] = array('type' => $event->getType(), 'account' => $event->getAccount(), 'amount' => $event->getAmount(), 'category' => $event->getCategory(), 'date' => $value, 'comment' => $event->getComment(), 'tags' => $event->getTags(), 'convert' => $event->getConvert(), 'close' => $event->getClose(), 'currency' => $event->getCurrency(), 'toAccount' => $event->getToAccount(), 'target' => $event->getTarget(), 'last' => $event->getLast(), 'time' => $event->getTime(), 'every' => $event->getEvery(), 'repeat' => $event->getRepeat(), 'week' => $event->getWeek(), 'accepted' => 0, 'chain' => $chain, 'mailEnabled' => $event->getMailEnabled(), 'mailDaysBefore' => $event->getMailDaysBefore(), 'mailHour' => $event->getMailHour(), 'mailMinutes' => $event->getMailMinutes(), 'smsEnabled' => $event->getSmsEnabled(), 'smsDaysBefore' => $event->getSmsDaysBefore(), 'smsHour' => $event->getSmsHour(), 'smsMinutes' => $event->getSmsMinutes()); } $operation = new Operation_Model(); // Расход и доход if ($event->getType() <= 1) { return $operation->addSome($operationsArray); } elseif ($event->getType() == 2) { return $operation->addSomeTransfer($operationsArray); } }