public function post() { $this->requiresLogin(); if ($this->id) { return $this->error(63); } if (isset($this->data['parent'])) { $event['parent'] = $this->data['parent']; $d_event_start = 0; $duration = 0; while ($event['parent']) { $event = $this->event()->get($event['parent']); if (!$d_event_start && isset($event['d_event_start'])) { $d_event_start = 0 + $event['d_event_start']; } if (!$duration && isset($event['duration'])) { $duration = 0 + $event['duration']; } } if ($d_event_start) { if ($d_event_start > Bootstrap::$main->now) { $d_event_start += 7 * 24 * 3600; } else { $d = date('Y-m-d ') . date('H:i', $d_event_start); $d_event_start = strtotime($d) + 7 * 24 * 3600; } } if (isset($event['user'])) { $parent = $event['id']; if ($event['user'] != Bootstrap::$main->user['id']) { return $this->error(19); } //if ($event['parent']) return $this->error(28); if (!$d_event_start) { foreach ($event as $k => $v) { if (substr($k, 0, 2) == 'd_') { unset($event[$k]); } } } else { $event['d_event_start'] = $d_event_start; $event['d_event_end'] = $d_event_start + $duration; $event['d_deadline'] = $d_event_start - 3600 * Bootstrap::$main->getConfig('event.default_deadline'); } foreach (['id'] as $key) { unset($event[$key]); } $event['active'] = 0; $event['_guest_count'] = 0; $event['parent'] = $parent; $event['fullhouse'] = null; $event['d_create'] = Bootstrap::$main->now; $event['d_change'] = Bootstrap::$main->now; $model = new eventModel($event, true); $this->check_before_save($model); $model->save(); $data = $model->data(); $result = $data['id'] > 0; return $this->status($data, $result); } } if ($this->data('name')) { $this->data['url'] = Tools::str_to_url(isset($this->data['url']) && $this->data['url'] ? $this->data['url'] : $this->data['name'], -1); if ($this->event()->find_on_url(Bootstrap::$main->user['id'], $this->data['url'])) { $url = $this->data['url']; $i = 1; while ($this->event()->find_on_url(Bootstrap::$main->user['id'], $url . $i)) { $i++; } $this->data['url'] = $url . $i; } } else { $this->data['name'] = ''; $this->data['url'] = ''; } $data = $this->data; $this->verify_data($data); $data['active'] = 0; $data['_guest_count'] = 0; $data['d_create'] = Bootstrap::$main->now; $data['user'] = Bootstrap::$main->user['id']; if ($this->data('name')) { $data['d_change'] = Bootstrap::$main->now; } $last = $this->event()->lastEvent() ?: []; foreach ($this->user_fields_to_copy as $uk) { $data[$uk] = isset($last[$uk]) ? $last[$uk] : Bootstrap::$main->user[$uk]; } $model = new eventModel($data, true); $model->currency = $this->country2currency($model->country); if ($model->lat && $model->lng) { $hints = $model->lastHints(); if ($hints) { $model->hints = $hints; } } $this->check_before_save($model); $model->save(); if (!$model->id) { return $this->status($data, false); } $tags = new tagModel(); //$tags->user2event($model->user,$model->id); $data = $model->data(); $data['tags'] = Tools::tags(null, $tags->for_event($model->id)); //$tags->for_event($model->id); //Tools::observe('new-event',['event'=>$data,'host'=>Bootstrap::$main->user,'parent'=>0]); return $this->status($data); }