public function delete() { require_once __DIR__ . '/../models/paymentModel.php'; require_once __DIR__ . '/../models/imageLabelModel.php'; require_once __DIR__ . '/../models/rateModel.php'; require_once __DIR__ . '/../models/guestModel.php'; require_once __DIR__ . '/../models/tagModel.php'; $this->requiresLogin(); if ($this->id && $this->id != Bootstrap::$main->user['id']) { $this->requiresLogin(true); } $user_id = $this->id ?: Bootstrap::$main->user['id']; $backup = []; $backup['user'] = $this->user($user_id)->data(); $md5hash = $backup['user']['md5hash']; $images = new imageModel(); $labels = new imageLabelModel(); $rates = new rateModel(); $guests = new guestModel(); $events = new eventModel(); $tags = new tagModel(); $payments = new paymentModel(); $backup['image'] = $images->getUsersImages($user_id) ?: []; $backup['imageLabels'] = []; foreach ($backup['image'] as $img) { $backup['imageLabels'] = array_merge($backup['imageLabels'], $labels->select(['image' => $img['id']]) ?: []); } $backup['event'] = $events->select(['user' => $user_id]) ?: []; $backup['tag'] = $tags->select(['user' => $user_id]) ?: []; foreach ($backup['event'] as $event) { $backup['tag'] = array_merge($backup['tag'], $tags->select(['event' => $event['id']]) ?: []); } $backup['rate'] = $rates->select(['user' => $user_id]) ?: []; $backup['rate'] = array_merge($backup['rate'], $rates->select(['host' => $user_id]) ?: []); $backup['guest'] = $guests->select(['user' => $user_id]) ?: []; $backup['payment'] = []; foreach ($backup['guest'] as $guest) { $backup['payment'] = array_merge($backup['payment'], $payments->select(['guest' => $guest['id']]) ?: []); } $backup_json = json_encode($backup, JSON_NUMERIC_CHECK); $path = 'arch/' . $md5hash . '/' . Bootstrap::$main->human_datetime_format(Bootstrap::$main->now); Tools::save($path . '/data.json', $backup_json); Tools::save($path . '/img', null, 'img/' . $md5hash); Tools::log('remove-user', Bootstrap::$main->user['id']); $this->user()->remove(); if (!$this->id || $this->id == Bootstrap::$main->user['id']) { return $this->get_logout(); } return $this->status(); }
protected function extend_search(&$events) { $tags = new tagModel(); $image = new imageModel(); if (is_array($events)) { foreach ($events as &$event) { $this->geo_tolerance($event, true); if ($event['parent']) { $event['url'] = $this->event($event['parent'])->url; } $t = $tags->for_event($event['parent'] ?: $event['id']); $event['tags'] = $t ? Tools::tags($t) : []; if (!is_array($event['img']) && $event['img'] > 0 && !isset($event['img_url'])) { $event['img'] = $image->get($event['img']); foreach (['id', 'src', 'user'] as $f) { if (isset($event['img'][$f])) { unset($event['img'][$f]); } } } foreach ($event as $k => $v) { if (substr($k, 0, 2) == 'd_') { unset($event[$k]); } } $user = $this->_get_user($event['user']); $event['host'] = $user; if (isset($user['url'])) { $event['url'] = $user['url'] . '/' . $event['url']; } $event['free_slots'] = $this->event()->getSlots($event['id']); foreach (['user', 'parent', 'active', 'min_guests'] as $k) { unset($event[$k]); } } } }