Exemplo n.º 1
0
 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);
 }