예제 #1
0
 public function delete($auto = false)
 {
     $this->requiresLogin();
     $event = $this->event()->get(0 + $this->id);
     if (!isset($event['user']) || $event['user'] != Bootstrap::$main->user['id']) {
         return $this->error(19);
     }
     $model = new eventModel($event);
     if (!$model->getGuests() && count($model->get_dates($model->id, false)) == 1) {
         $model->remove();
         return $this->status();
     } elseif (!$auto && $model->d_event_start < Bootstrap::$main->now) {
         return $this->error(60);
     } else {
         $guests = $model->getGuests();
         $guestModel = new guestModel();
         $otoken = $auto ? 'auto-cancel' : 'host-cancel';
         Bootstrap::$main->human_datetime_format();
         $event = $this->event()->get(0 + $this->id);
         $host = $this->user()->get($event['user']);
         if (is_array($guests)) {
             foreach ($guests as $guest) {
                 $guestModel->get($guest['guest_id']);
                 $guestModel->cancel_reason = $this->data('reason');
                 $guestModel->d_cancel = Bootstrap::$main->now;
                 $guestModel->canceler = Bootstrap::$main->user['id'];
                 $guestModel->save();
                 $ics = Ics::cancelation($event, $host, $guest, $event['create'], $event['change']);
                 $data = $guestModel->data();
                 $data['event'] = $event;
                 $data['guest'] = $guest;
                 $data['host'] = $host;
                 if ($guestModel->d_payment) {
                     Tools::observe($otoken, $data, [['cancel.ics' => $ics]]);
                 }
             }
         }
         $model->active = -1;
         $model->save();
         Tools::log('event-' . $otoken, ['event' => $model->data(), 'guests' => $guests]);
     }
     return $this->status();
 }
예제 #2
0
 public function delete()
 {
     $this->requiresLogin();
     $this->check_input();
     $guest = $this->guest()->get($this->id);
     if (!isset($guest['user'])) {
         $this->error(29);
     }
     if ($guest['user'] != Bootstrap::$main->user['id']) {
         Bootstrap::$main->human_datetime_format();
     }
     $event = $this->event()->get($guest['event']);
     if ($guest['user'] != Bootstrap::$main->user['id'] && $event['user'] != Bootstrap::$main->user['id']) {
         $this->error(19);
     }
     if (!$this->guest()->d_payment) {
         $this->guest()->remove();
         return $this->status();
     }
     if ($event['d_event_start'] < Bootstrap::$main->now) {
         $this->error(70);
     }
     $this->guest()->cancel_reason = $this->data('reason');
     $this->guest()->d_cancel = Bootstrap::$main->now;
     $this->guest()->canceler = Bootstrap::$main->user['id'];
     $this->guest()->save();
     $eventController = new eventController();
     $eventController->recalculate_fullhouse($this->guest()->event);
     Bootstrap::$main->human_datetime_format();
     $this->event()->get($this->guest()->event);
     $data = $this->guest()->data();
     $data['event'] = $this->event()->data();
     $data['guest'] = $this->user()->get($guest['user']);
     $data['host'] = $this->user()->get($event['user']);
     $ics = Ics::cancelation($event, $data['host'], $data['guest'], $event['create'], $event['change']);
     if ($event['user'] == Bootstrap::$main->user['id']) {
         Tools::observe('guest-canceled-by-host', $data, [['cancel.ics' => $ics]]);
     } else {
         Tools::observe('event-canceled', $data, [['cancel.ics' => $ics]]);
         Tools::observe('event-canceled-to-host', $data);
     }
     return $this->status($this->guest()->data());
 }