Example #1
0
 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'];
     }
 }
Example #2
0
 public function post()
 {
     $this->requiresLogin();
     $this->check_input();
     if (!isset($this->data['event'])) {
         $this->error(31);
     }
     $event = $this->event()->get($this->data['event']);
     if (!isset($event['user'])) {
         $this->error(29);
     }
     if ($event['user'] == Bootstrap::$main->user['id']) {
         $this->error(32);
     }
     if ($event['active'] != 1) {
         $this->error(62);
     }
     if (!isset($this->data['persons']) || !($this->data['persons'] + 0)) {
         $this->data['persons'] = 1;
     }
     if ($event['d_event_end'] < Bootstrap::$main->now) {
         $this->error(34);
     }
     if ($event['d_deadline'] < Bootstrap::$main->now && !$event['bookafterdeadline']) {
         $this->error(34);
     }
     if ($this->data['persons'] > $this->event()->getSlots()) {
         $this->error(33);
     }
     if ($this->data('guest_agreement')) {
         $userController = new userController();
         $userController->set_agreement(false);
     }
     if (!Bootstrap::$main->user['d_guest_agreement']) {
         $this->error(64);
     }
     if ($event['fb_friends']) {
         $this->require_fb_friend($event['user'], true);
     }
     $data = ['persons' => $this->data['persons'], 'event' => $this->data['event'], 'user' => Bootstrap::$main->user['id'], 'd_create' => Bootstrap::$main->now, 'message' => $this->data('message')];
     $model = new guestModel($data, true);
     $model->guest_price = $event['guest_price'];
     $model->host_price = $event['host_price'];
     $model->save();
     $data = $model->data();
     if ($model->id) {
         if (!Bootstrap::$main->user['ref_user']) {
             if (!$this->event()->get_for_user(Bootstrap::$main->user['id'])) {
                 $me = new userModel(Bootstrap::$main->user['id']);
                 $me->ref_user = $event['user'];
                 if (!$me->ref_site) {
                     $me->ref_site = 'guest';
                 }
                 $me->save();
             }
         }
         if ($event['price'] > 0) {
             $data['payu'] = $this->get_pay_link($model->id);
         }
         if ($event['price'] + 0 == 0) {
             $payment = new paymentModel();
             $payment->amount = 0;
             $payment->guest = $model->id;
             $this->paid($payment, 1);
         }
         Bootstrap::$main->session('book', []);
     }
     return $this->status($data, $model->id ? true : false);
 }