public function post() { $this->check_input(); if (!(0 + $this->data('event'))) { $this->error(31); } $event = $this->event()->get($this->data('event')); if ($event['id'] != $this->data('event')) { $this->error(31); } if (!(0 + $this->data('persons'))) { $this->error(33); } $eventController = new eventController(); $userController = new userController(); $user = new userModel(); $user->get($event['user']); $event = $eventController->public_data($event, true); $event['id'] = $this->data('event'); $event['host'] = $userController->public_data($user->data(), true); $event['free_slots'] = $this->event()->getSlots(); $data = ['event' => $event, 'persons' => $this->data('persons')]; if ($event['fb_friends']) { Bootstrap::$main->session('fb_friends', 1); } return $this->status(Bootstrap::$main->session('book', $data)); }
public function set_agreement($host = true) { $this->requiresLogin(); $user = new userModel(Bootstrap::$main->user['id']); $field = $host ? 'd_host_agreement' : 'd_guest_agreement'; if ($user->{$field}) { return; } $user->{$field} = Bootstrap::$main->now; $user->save(); Bootstrap::$main->user = $user->data(); Bootstrap::$main->session('user', $user->data()); }
protected function verify_data(&$data, $model = null, $name_required = false) { $country = @(isset($data['country']) && $data['country']) ? $data['country'] : (is_object($model) ? $model->country : ''); if ($country) { $data['currency'] = $this->country2currency($country); } if (!$model) { $model = $this->event(); } if ($name_required && !$model->name) { if (!isset($data['name']) || !$data['name']) { return $this->error(21); } } $this->check_input(['tags' => ['*' => 1], 'guests' => ['*' => ['tags' => ['*' => 1]]], 'img' => ['labels' => 1], 'images' => ['*' => ['labels' => 1]]]); if (isset($data['payment'])) { $userController = new userController(); $userController->check_payment(Bootstrap::$main->user['country'], $data['payment']); } if (isset($data['host_agreement'])) { $userController = new userController(); $userController->set_agreement(); } if ($model->active == -1) { return $this->error(61); } if (isset($data['name']) && strlen($data['name']) > 200) { return $this->error(21); } if (isset($data['url']) && strlen($data['url']) > 200) { return $this->error(21); } if (isset($data['url'])) { $data['url'] = Tools::str_to_url($data['url'], -1); } foreach ($data as $k => $v) { if (substr($k, 0, 2) == 'd_') { return $this->error(22); } } if (!$model->active) { if (isset($data['event_end']) && isset($data['duration'])) { unset($data['event_end']); } if (isset($data['event_start'])) { $data['d_event_start'] = $this->strtotime($data['event_start']); } if (isset($data['event_end'])) { $data['d_event_end'] = $this->strtotime($data['event_end']); } if (isset($data['deadline'])) { $data['d_deadline'] = $this->strtotime($data['deadline']); } if (isset($data['d_event_start']) && $data['d_event_start'] < Bootstrap::$main->now) { return $this->error(66); } if (!isset($data['d_event_end']) && !isset($data['d_event_start']) && $model->d_event_end) { $data['d_event_end'] = $model->d_event_end; } if (!isset($data['d_event_start']) && $model->d_event_start) { $data['d_event_start'] = $model->d_event_start; } if (isset($data['d_event_start']) && isset($data['duration']) && !is_array($data['duration'])) { $data['d_event_end'] = $data['d_event_start'] + $data['duration']; unset($data['duration']); } if (isset($data['d_event_start']) && isset($data['d_event_end']) && $data['d_event_start'] >= $data['d_event_end']) { return $this->error(25); } if (isset($data['d_event_start']) && isset($data['d_deadline']) && $data['d_event_start'] <= $data['d_deadline']) { $data['d_deadline'] = $data['d_event_start'] - 3600 * Bootstrap::$main->getConfig('event.default_deadline'); } if (isset($data['d_event_start']) && isset($data['d_deadline']) && $data['d_event_start'] - $data['d_deadline'] > 7 * 24 * 3600) { $data['d_deadline'] = $data['d_event_start'] - 3600 * Bootstrap::$main->getConfig('event.default_deadline'); } if (isset($data['d_event_start']) && !isset($data['d_event_end'])) { $data['d_event_end'] = $data['d_event_start'] + 3600 * Bootstrap::$main->getConfig('event.default_duration'); } if (isset($data['d_event_start']) && !isset($data['d_deadline'])) { $data['d_deadline'] = $data['d_event_start'] - 3600 * Bootstrap::$main->getConfig('event.default_deadline'); } if (!isset($data['d_deadline']) && $model->d_deadline) { $data['d_deadline'] = $model->d_deadline; } if (!isset($data['min_guests']) && $model->min_guests) { $data['min_guests'] = $model->min_guests; } if (!isset($data['max_guests']) && $model->max_guests) { $data['max_guests'] = $model->max_guests; } if (!isset($data['min_guests']) || !$data['min_guests']) { $data['min_guests'] = 1; } if (!isset($data['max_guests']) || !$data['max_guests']) { $data['max_guests'] = $model->lastMaxGuests(); } if (!isset($data['max_guests']) || !$data['max_guests']) { $data['max_guests'] = 4; } if (isset($data['min_guests']) && isset($data['max_guests']) && $data['min_guests'] > $data['max_guests']) { return $this->error(26); } $user = new userModel(Bootstrap::$main->user); $user_needs_save = false; foreach ($this->user_fields_to_copy as $uk) { if ($this->data($uk) && !Bootstrap::$main->user[$uk]) { $user->{$uk} = $this->data($uk); $user_needs_save = true; } } if ($user_needs_save) { $user->save(); Bootstrap::$main->user = $user->data(); Bootstrap::$main->session('user', $user->data()); } } if (isset($data['active'])) { if ($data['active'] && !$model->active) { @$this->may_activate($data, $model); } if (!$data['active'] && $model->active) { $this->may_deactivate($model); } } if (isset($data['img']['id'])) { $data['img'] = $data['img']['id']; } }
protected function paid(paymentModel $payment, $amount) { if (0.9 * $payment->amount < $amount) { $image = new imageModel(); $guest = new guestModel($payment->guest); if ($guest->d_payment) { return; } $guest->d_payment = Bootstrap::$main->now; $guest->save(); $e = $this->event()->get($guest->event); Tools::userHasAccessToEvent($guest->event, $guest->user, true); $data = []; $data['event'] = $this->event()->data(); $user = new userModel($data['event']['user']); $data['host'] = $user->data(); Bootstrap::$main->session('time_delta', $user->delta); Bootstrap::$main->human_datetime_format(); $data['event'] = $this->event()->get($guest->event); $data['event']['img'] = $image->get($data['event']['img']); $user->get($guest->user); $data['guest'] = $user->data(); $data['data'] = $guest->data(); $data['payment'] = $payment->data(); if (isset($data['payment']['notify'])) { $data['notify'] = json_decode($data['payment']['notify'], true); } $ics = Ics::invitation($e, $data['host'], $data['guest'], $e['create'], $guest->create); Tools::observe('event-paid-to-host', $data); Tools::observe('event-paid-to-guest', $data, [['invite.ics' => $ics]]); Tools::log('guest', $data); $eventController = new eventController(); $eventController->recalculate_fullhouse($guest->event); } }