add all files
This commit is contained in:
Executable
+529
@@ -0,0 +1,529 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Pages extends CI_Controller {
|
||||
|
||||
/**
|
||||
* Index Page for this controller.
|
||||
*
|
||||
* Maps to the following URL
|
||||
* http://example.com/index.php/welcome
|
||||
* - or -
|
||||
* http://example.com/index.php/welcome/index
|
||||
* - or -
|
||||
* Since this controller is set as the default controller in
|
||||
* config/routes.php, it's displayed at http://example.com/
|
||||
*
|
||||
* So any other public methods not prefixed with an underscore will
|
||||
* map to /index.php/welcome/<method_name>
|
||||
* @see https://codeigniter.com/userguide3/general/urls.html
|
||||
*/
|
||||
public function index(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$data['pageTitle'] = '';
|
||||
$this->load->view('pages/home', $data);
|
||||
}
|
||||
|
||||
public function barber($lang){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
$data['pageTitle'] = '';
|
||||
$data['selectedLang'] = $lang;
|
||||
|
||||
$data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang);
|
||||
$this->load->view('pages/barber', $data);
|
||||
}
|
||||
|
||||
public function beauty($lang){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
$data['pageTitle'] = '';
|
||||
$data['selectedLang'] = $lang;
|
||||
|
||||
$data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang);
|
||||
$this->load->view('pages/beauty', $data);
|
||||
}
|
||||
|
||||
public function booking($lang, $subpage){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$data['pageTitle'] = '';
|
||||
$data['selectedLang'] = $lang;
|
||||
$data['subpage'] = $subpage;
|
||||
|
||||
$data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang);
|
||||
$data['workers'] = $this->Service_model->getActiveWorkers();
|
||||
|
||||
switch($subpage){
|
||||
case 'barber':
|
||||
$this->load->view('pages/barber-booking', $data);
|
||||
break;
|
||||
case 'beauty':
|
||||
$this->load->view('pages/beauty-booking', $data);
|
||||
break;
|
||||
default:
|
||||
header('Location:'.SITEURL);
|
||||
}
|
||||
}
|
||||
|
||||
public function booking_finished($lang, $subpage){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
$data['pageTitle'] = '';
|
||||
$data['selectedLang'] = $lang;
|
||||
|
||||
switch($subpage){
|
||||
case 'barber':
|
||||
$this->load->view('pages/barber-booking-finished', $data);
|
||||
break;
|
||||
case 'beauty':
|
||||
$this->load->view('pages/beauty-booking-finished', $data);
|
||||
break;
|
||||
default:
|
||||
header('Location:'.SITEURL);
|
||||
}
|
||||
}
|
||||
|
||||
public function email_verification(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
$this->load->model('Log_model');
|
||||
|
||||
$data['pageTitle'] = '';
|
||||
$this->load->view('pages/email-verification', $data);
|
||||
}
|
||||
|
||||
public function ajax(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
$this->load->model('Log_model');
|
||||
|
||||
$data['pageTitle'] = '';
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){
|
||||
if($_POST['service_ids'] != ''){
|
||||
$explodedServiceIds = explode(',', $_POST['service_ids']);
|
||||
$totalLength = '00:00:00';
|
||||
if(!empty($explodedServiceIds)){
|
||||
foreach($explodedServiceIds as $explodedServiceIdItem){
|
||||
$currentService = $this->Service_model->getServiceById($explodedServiceIdItem);
|
||||
$time = $totalLength;
|
||||
$time2 = $currentService->service_time;
|
||||
|
||||
$secs = strtotime($time2)-strtotime("00:00:00");
|
||||
$addedTotal = date("H:i:s",strtotime($time)+$secs);
|
||||
$totalLength = $addedTotal;
|
||||
}
|
||||
|
||||
}
|
||||
echo $totalLength;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){
|
||||
$results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']);
|
||||
|
||||
$rowIndex = 1;
|
||||
if(is_array($results)){
|
||||
foreach($results as $resultIem){
|
||||
?>
|
||||
<option value="<?php echo $resultIem;?>"><?php echo date('H:i', strtotime($resultIem));?></option>
|
||||
<?php
|
||||
$rowIndex++;
|
||||
}
|
||||
}
|
||||
else{
|
||||
echo 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){
|
||||
$results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00');
|
||||
|
||||
$rowIndex = 1;
|
||||
if(!empty($results)){
|
||||
foreach($results as $resultIem){
|
||||
?>
|
||||
<div class="availableBookingTime" id="bookingTime_<?php echo $rowIndex;?>" onclick="setSelectedTime('<?php echo $resultIem;?>', '<?php echo $rowIndex;?>')"><span><?php echo date('H:i', strtotime($resultIem));?></span></div>
|
||||
<?php
|
||||
$rowIndex++;
|
||||
}
|
||||
}
|
||||
else{
|
||||
echo 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'getSelectedWorker'){
|
||||
$result = $this->Service_model->getWorkerById($_POST['worker_id']);
|
||||
|
||||
if(is_object($result)){
|
||||
?>
|
||||
<div class="serviceBookingprofileImage" style="background-image:url('<?php echo SITEURL.'assets/img/'.$result->worker_profile_img;?>');"></div>
|
||||
<div class="serviceBookingprofileName"><?php echo $result->worker_name;?></div>
|
||||
<?php
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
echo 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'changeUserStatus' && isset($_POST['user_id']) && isset($_POST['newValue']) && isset($_POST['operator'])){
|
||||
$data['currentUser'] = $this->User_model->getUserById($_POST['user_id']);
|
||||
$userArray = array(
|
||||
'is_enabled' => $_POST['newValue']
|
||||
);
|
||||
$this->User_model->updateUser($_POST['user_id'], $userArray);
|
||||
$this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']);
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){
|
||||
echo $this->User_model->isUsernameAvailable($_POST['username']);
|
||||
}
|
||||
|
||||
if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){
|
||||
$logInfoArray = $this->Log_model->getAllLoginfo();
|
||||
$logrow = '';
|
||||
foreach($logInfoArray as $logInfoItem){
|
||||
$logDateTime = new datetime($logInfoItem->event_datetime);
|
||||
$logrow .= date_format($logDateTime,"Y-m-d H:i").' '.$logInfoItem->username.' '.$logInfoItem->event_content.' ';
|
||||
}
|
||||
echo $logrow;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$this->load->view('pages/ajax', $data);
|
||||
}
|
||||
|
||||
|
||||
public function booking_process(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Service_model');
|
||||
|
||||
$data['pageTitle'] = '';
|
||||
$data['subpage'] = '';
|
||||
|
||||
if(isset($_POST['sendBooking'])){
|
||||
//calculate finish time
|
||||
$serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time']));
|
||||
$serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength']));
|
||||
$secs = strtotime($serviceLengthTime)-strtotime("00:00:00");
|
||||
$serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs);
|
||||
|
||||
$data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']);
|
||||
$data['workers'] = $this->Service_model->getAllWorkers();
|
||||
$data['selectedLang'] = 'en';
|
||||
$selectedServiceArray = array();
|
||||
|
||||
//find selected services
|
||||
if(is_array($data['services'])){
|
||||
foreach($data['services'] as $serviceItem){
|
||||
if(isset($_POST['service_'.$serviceItem->service_id])){
|
||||
if($_POST['service_'.$serviceItem->service_id]){
|
||||
$selectedServiceArray[] = $serviceItem->service_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$bookingArray = array(
|
||||
'guest_name' => $_POST['guest_name'],
|
||||
'guest_email' => $_POST['guest_email'],
|
||||
'guest_phone' => $_POST['guest_phone'],
|
||||
'worker_id' => $_POST['worker_id'],
|
||||
'booking_date' => $_POST['booking_date'],
|
||||
'booking_start_time' => $_POST['booking_start_time'],
|
||||
'booking_finish_time' => $serviceFinishTime,
|
||||
'service_ids' => serialize($selectedServiceArray),
|
||||
'guest_confirmed' => '0',
|
||||
'guest_confirm_code' => '1234',
|
||||
);
|
||||
|
||||
$this->Service_model->createBooking($bookingArray);
|
||||
$worker = $this->Service_model->getWorkerById($bookingArray['worker_id']);
|
||||
|
||||
$services = unserialize($bookingArray['service_ids']);
|
||||
$serviceArray = array();
|
||||
$emailArray = array();
|
||||
|
||||
if(is_array($services)){
|
||||
foreach($services as $serviceItem){
|
||||
$selectedService = $this->Service_model->getServiceById($serviceItem);
|
||||
if(is_object($selectedService)){
|
||||
$serviceArray[] = $selectedService;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$content = '';
|
||||
|
||||
switch($_POST['lang']){
|
||||
case 'no':
|
||||
$content = 'Kjære gjest,<br />';
|
||||
$content .= 'Takk for din bestilling!<br />';
|
||||
$content .= '<br />';
|
||||
$content .= '<table>';
|
||||
$content .= '<tr><td>Navn: </td><td>'.$bookingArray['guest_name'].'</td></tr>';
|
||||
$content .= '<tr><td>E-post: </td><td>'.$bookingArray['guest_email'].'</td></tr>';
|
||||
$content .= '<tr><td>Telefon: </td><td>'.$bookingArray['guest_phone'].'</td></tr>';
|
||||
$content .= '<tr><td>Arbeider: </td><td>'.$worker->worker_name.'</td></tr>';
|
||||
$content .= '<tr><td>Dato: </td><td>'.$bookingArray['booking_date'].'</td></tr>';
|
||||
$content .= '<tr><td>Tid: </td><td>'.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'</td></tr>';
|
||||
$content .= '<tr><td>Tjenester: </td><td><table>';
|
||||
$totalServicePrice = 0;
|
||||
foreach($serviceArray as $serviceArrayItem){
|
||||
$totalServicePrice += $serviceArrayItem->service_price;
|
||||
$content .= '<tr><td>'.$serviceArrayItem->service_name_no.'</td><td>'.$serviceArrayItem->service_price.' kr</td></tr>';
|
||||
}
|
||||
$content .= '</table></td>';
|
||||
$content .= '<tr><td>Totalpris: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||
$content .= '</table>';
|
||||
$content .= '<br /> STUDIOBEVE';
|
||||
break;
|
||||
case 'en':
|
||||
$content = 'Dear Guest,<br />';
|
||||
$content .= 'Thank you for your booking!<br />';
|
||||
$content .= '<br />';
|
||||
$content .= '<table>';
|
||||
$content .= '<tr><td>Name: </td><td>'.$bookingArray['guest_name'].'</td></tr>';
|
||||
$content .= '<tr><td>Email: </td><td>'.$bookingArray['guest_email'].'</td></tr>';
|
||||
$content .= '<tr><td>Phone: </td><td>'.$bookingArray['guest_phone'].'</td></tr>';
|
||||
$content .= '<tr><td>Worker: </td><td>'.$worker->worker_name.'</td></tr>';
|
||||
$content .= '<tr><td>Date: </td><td>'.$bookingArray['booking_date'].'</td></tr>';
|
||||
$content .= '<tr><td>Time: </td><td>'.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'</td></tr>';
|
||||
$content .= '<tr><td>Services: </td><td><table>';
|
||||
$totalServicePrice = 0;
|
||||
foreach($serviceArray as $serviceArrayItem){
|
||||
$totalServicePrice += $serviceArrayItem->service_price;
|
||||
$content .= '<tr><td>'.$serviceArrayItem->service_name_en.'</td><td>'.$serviceArrayItem->service_price.' kr</td></tr>';
|
||||
}
|
||||
$content .= '</table></td>';
|
||||
$content .= '<tr><td>Total price: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||
$content .= '</table>';
|
||||
$content .= '<br /> STUDIOBEVE';
|
||||
break;
|
||||
case 'hu':
|
||||
$content = 'Kedves Vendégünk,<br />';
|
||||
$content .= 'Köszönettel fogadtuk a foglalását!<br />';
|
||||
$content .= '<br />';
|
||||
$content .= '<table>';
|
||||
$content .= '<tr><td>Név: </td><td>'.$bookingArray['guest_name'].'</td></tr>';
|
||||
$content .= '<tr><td>Email: </td><td>'.$bookingArray['guest_email'].'</td></tr>';
|
||||
$content .= '<tr><td>Telefon: </td><td>'.$bookingArray['guest_phone'].'</td></tr>';
|
||||
$content .= '<tr><td>Dolgozó: </td><td>'.$worker->worker_name.'</td></tr>';
|
||||
$content .= '<tr><td>Dátum: </td><td>'.$bookingArray['booking_date'].'</td></tr>';
|
||||
$content .= '<tr><td>Időpont: </td><td>'.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'</td></tr>';
|
||||
$content .= '<tr><td>Szolgáltatás(ok): </td><td><table>';
|
||||
$totalServicePrice = 0;
|
||||
foreach($serviceArray as $serviceArrayItem){
|
||||
$totalServicePrice += $serviceArrayItem->service_price;
|
||||
$content .= '<tr><td>'.$serviceArrayItem->service_name_hu.'</td><td>'.$serviceArrayItem->service_price.' kr</td></tr>';
|
||||
}
|
||||
$content .= '</table></td>';
|
||||
$content .= '<tr><td>Összesen fizetendő: </td><td><strong>'.$totalServicePrice.' kr</strong></td></tr>';
|
||||
$content .= '</table>';
|
||||
$content .= '<br /> STUDIOBEVE';
|
||||
break;
|
||||
}
|
||||
|
||||
$data['selectedLang'] = $_POST['lang'];
|
||||
|
||||
$emailItem = array(
|
||||
'addressee_email' => $bookingArray['guest_email'],
|
||||
'addressee_name' => $bookingArray['guest_name'],
|
||||
'subject' => '[studiobeve] Your booking has arrived',
|
||||
'content' => $content,
|
||||
'attachments' => array()
|
||||
);
|
||||
$emailArray[] = $emailItem;
|
||||
header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']);
|
||||
}
|
||||
|
||||
$this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']);
|
||||
$this->load->view('pages/booking-process', $data);
|
||||
}
|
||||
|
||||
public function profile(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Log_model');
|
||||
$this->load->model('Module_model');
|
||||
$data['message'] = '';
|
||||
$data['message_class'] = '';
|
||||
$data['fullname'] = '';
|
||||
$data['password'] = '';
|
||||
$data['profile_img_url'] = '';
|
||||
|
||||
if(isset($_SESSION['username'])){
|
||||
$data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']);
|
||||
|
||||
$data['message'] = '';
|
||||
$data['message_class'] = '';
|
||||
$data['pageTitle'] = 'Profil szerkesztése';
|
||||
|
||||
if($this->User_model->is_user_admin($_SESSION['username'])){
|
||||
$data['activeModules'] = $this->Module_model->getAllModule();
|
||||
}
|
||||
else{
|
||||
$data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id);
|
||||
}
|
||||
|
||||
if(isset($_POST["storeProfile"])) {
|
||||
|
||||
if($_POST['fullname'] != $data['currentUser']->fullname){
|
||||
$userArray = array(
|
||||
'fullname' => $_POST['fullname']
|
||||
);
|
||||
$this->User_model->updateUser($data['currentUser']->user_id, $userArray);
|
||||
$this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']);
|
||||
}
|
||||
|
||||
if($_POST['password'] != ''){
|
||||
$userArray = array(
|
||||
'password' => hash('sha256', $_POST['password'])
|
||||
);
|
||||
$this->User_model->updateUser($data['currentUser']->user_id, $userArray);
|
||||
$this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']);
|
||||
}
|
||||
|
||||
|
||||
//upload profile image
|
||||
if($_FILES["profile_img"]["tmp_name"] != ''){
|
||||
$target_dir = getcwd()."/assets/img/profiles/";
|
||||
$target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username']));
|
||||
$imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION));
|
||||
|
||||
if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) {
|
||||
$data['message'] = 'A profilkép sikeresen feltöltve!';
|
||||
$data['message_class'] = 'successMessage';
|
||||
$data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType;
|
||||
$userArray = array(
|
||||
'profile_img_url' => $data['profile_img_url']
|
||||
);
|
||||
$this->User_model->updateUser($data['currentUser']->user_id, $userArray);
|
||||
$this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']);
|
||||
} else {
|
||||
$data['message'] = 'Hiba a feltöltés közben!';
|
||||
$data['message_class'] = 'errorMessage';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$data['message'] = 'A profil sikeresen módosítva!';
|
||||
$data['message_class'] = 'successMessage';
|
||||
}
|
||||
|
||||
|
||||
$data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']);
|
||||
$this->load->view('pages/profile', $data);
|
||||
|
||||
}
|
||||
else{
|
||||
header("Location:".SITEURL."login");
|
||||
}
|
||||
}
|
||||
|
||||
public function log_monitor(){
|
||||
$this->load->helper('url');
|
||||
$this->load->model('User_model');
|
||||
$this->load->model('Log_model');
|
||||
$this->load->model('Module_model');
|
||||
|
||||
if(isset($_SESSION['username'])){
|
||||
$data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']);
|
||||
$data['message'] = '';
|
||||
$data['message_class'] = '';
|
||||
$data['pageTitle'] = 'Rendszermonitor';
|
||||
$data['logInfoLink'] = '';
|
||||
|
||||
if($this->User_model->is_user_admin($_SESSION['username'])){
|
||||
$data['activeModules'] = $this->Module_model->getAllModule();
|
||||
}
|
||||
else{
|
||||
$data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id);
|
||||
}
|
||||
|
||||
$selectedModule = $this->Module_model->getModuleBySlug('log-monitor');
|
||||
if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){
|
||||
|
||||
if(isset($_POST['exportToFile'])){
|
||||
$logInfoArray = $this->Log_model->getAllLoginfo();
|
||||
$logrow = '';
|
||||
$logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!");
|
||||
$row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL;
|
||||
$string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row );
|
||||
fwrite($logTxt, $string_encoded);
|
||||
|
||||
foreach($logInfoArray as $logInfoItem){
|
||||
$logDateTime = new datetime($logInfoItem->event_datetime);
|
||||
$row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL;
|
||||
$string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row );
|
||||
fwrite($logTxt, $string_encoded);
|
||||
}
|
||||
fclose($logTxt);
|
||||
$data['logInfoLink'] = '<a href="'.base_url().'documents/loginfo.csv'.'" target="_blank">A loginfo.csv fájl letöltése</a>';
|
||||
}
|
||||
|
||||
$this->load->view('log-monitor', $data);
|
||||
|
||||
}
|
||||
else{
|
||||
header("Location:".SITEURL."home");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
header("Location:".SITEURL."login");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user