HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/360.naniguide.com/backend/ajax/get_rooms.php
<?php
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED);
ob_start();
session_start();
if($_SESSION['svt_si']!=session_id()) {
    die();
}
require_once("../../db/connection.php");
require_once("../functions.php");
$id_user = $_SESSION['id_user'];
session_write_close();
$id_virtualtour = (int)$_POST['id_virtualtour'];
switch(get_user_role($id_user)) {
    case 'administrator':
        $where = "";
        break;
    case 'customer':
        $where = " AND v.id_user=$id_user ";
        break;
    case 'editor':
        $where = " AND v.id IN () ";
        $query = "SELECT GROUP_CONCAT(id_virtualtour) as ids FROM svt_assign_virtualtours WHERE id_user=$id_user;";
        $result = $mysqli->query($query);
        if($result) {
            if($result->num_rows==1) {
                $row=$result->fetch_array(MYSQLI_ASSOC);
                $ids = $row['ids'];
                $where = " AND v.id IN ($ids) ";
            }
        }
        break;
}
$array_rooms = array();
$permissions = array();
if(get_user_role($id_user)=="editor") {
    $editor_permissions = get_editor_permissions($id_user,$id_virtualtour);
    if($editor_permissions['create_rooms']==1) {
        $permissions['create'] = true;
    } else {
        $permissions['create'] = false;
    }
    if($editor_permissions['edit_rooms']==1) {
        $permissions['edit'] = true;
    } else {
        $permissions['edit'] = false;
    }
    if($editor_permissions['delete_rooms']==1) {
        $permissions['delete'] = true;
    } else {
        $permissions['delete'] = false;
    }
} else {
    $permissions['create'] = true;
    $permissions['edit'] = true;
    $permissions['delete'] = true;
}
$s3_params = check_s3_tour_enabled($id_virtualtour);
$s3_enabled = false;
if(!empty($s3_params)) {
    $s3_bucket_name = $s3_params['bucket'];
    $s3_region = $s3_params['region'];
    $s3_url = init_s3_client($s3_params);
    if($s3_url!==false) {
        $s3_enabled = true;
    }
}
if($_SESSION['full_group_by']===true) {
    $group_by = "r.id,r.priority,r.visible,r.name,r.type,r.panorama_image,r.thumb_image,r.multires_status,v.enable_multires,r.yaw,r.pitch,r.h_pitch,r.h_roll,r.allow_pitch,r.min_pitch,r.max_pitch,r.min_yaw,r.max_yaw,r.haov,r.vaov,r.virtual_staging,r.main_view_tooltip";
} else {
    $group_by = "r.id,r.priority";
}
$query = "SELECT r.id,r.visible,r.name,r.type,r.panorama_image,r.thumb_image,(SELECT COUNT(*) FROM svt_markers WHERE id_room=r.id) as count_markers,(SELECT COUNT(*) FROM svt_pois WHERE id_room=r.id) as count_pois,(SELECT COUNT(*) FROM svt_measures WHERE id_room=r.id) as count_measures,r.multires_status,v.enable_multires,r.yaw,r.pitch,r.h_pitch,r.h_roll,r.allow_pitch,r.min_pitch,r.max_pitch,r.min_yaw,r.max_yaw,r.haov,r.vaov,r.virtual_staging,r.main_view_tooltip,GROUP_CONCAT(DISTINCT ra.panorama_image ORDER BY ra.priority ASC) as panoramas_list FROM svt_rooms as r 
JOIN svt_virtualtours AS v ON v.id = r.id_virtualtour
LEFT JOIN svt_rooms_alt AS ra ON ra.id_room=r.id 
WHERE v.id = $id_virtualtour $where
GROUP BY $group_by
ORDER BY r.priority ASC, r.id ASC";
$result = $mysqli->query($query);
if($result) {
    if($result->num_rows>0) {
        while($row=$result->fetch_array(MYSQLI_ASSOC)) {
            if($row['enable_multires']) {
                $room_pano = str_replace('.jpg','',$row['panorama_image']);
                if($s3_enabled) {
                    $multires_config_file = "s3://$s3_bucket_name/viewer/panoramas/multires/$room_pano/config.json";
                } else {
                    $multires_config_file = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'viewer'.DIRECTORY_SEPARATOR.'panoramas'.DIRECTORY_SEPARATOR.'multires'.DIRECTORY_SEPARATOR.$room_pano.DIRECTORY_SEPARATOR.'config.json';
                }
                $row['multires_config']=$multires_config_file;
                if(file_exists($multires_config_file)) {
                    $row['multires']=1;
                } else {
                    $row['multires']=0;
                }
            } else {
                $row['multires']=0;
            }
            if($s3_enabled) {
                $thumb_image_url = $s3_url."viewer/panoramas/thumb/".$row['panorama_image'];
                $thumb_image_path = "s3://$s3_bucket_name/viewer/panoramas/preview/".$row['panorama_image'];
                $thumb_custom_path = "s3://$s3_bucket_name/viewer/panoramas/thumb_custom/".$row['thumb_image'];
            } else {
                $thumb_image_url = "../viewer/panoramas/thumb/".$row['panorama_image'];
                $thumb_image_path = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'viewer'.DIRECTORY_SEPARATOR.'panoramas'.DIRECTORY_SEPARATOR.'preview'.DIRECTORY_SEPARATOR.$row['panorama_image'];
                $thumb_custom_path = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'viewer'.DIRECTORY_SEPARATOR.'panoramas'.DIRECTORY_SEPARATOR.'thumb_custom'.DIRECTORY_SEPARATOR.$row['thumb_image'];
            }
            if(file_exists($thumb_image_path)) {
                if($s3_enabled) {
                    $thumb_image_url = $s3_url."viewer/panoramas/preview/".$row['panorama_image'];
                } else {
                    $thumb_image_url = "../viewer/panoramas/preview/".$row['panorama_image'];
                }
            }
            if(!empty($row['thumb_image'])) {
                if(file_exists($thumb_custom_path)) {
                    if($s3_enabled) {
                        $thumb_image_url = $s3_url."viewer/panoramas/thumb_custom/".$row['thumb_image'];
                    } else {
                        $thumb_image_url = "../viewer/panoramas/thumb_custom/".$row['thumb_image'];
                    }
                }
            }
            $row['thumb_image_url']=$thumb_image_url;
            $row['category']='';
            if(empty($row['panoramas_list'])) $row['panoramas_list']='';
            $array_rooms_alt = array();
            $query_alt = "SELECT id,panorama_image,view_tooltip FROM svt_rooms_alt WHERE id_room=".$row['id']." ORDER BY priority;";
            $result_alt = $mysqli->query($query_alt);
            if($result_alt) {
                if ($result_alt->num_rows > 0) {
                    while ($row_alt = $result_alt->fetch_array(MYSQLI_ASSOC)) {
                        array_push($array_rooms_alt,$row_alt);
                    }
                }
            }
            $row['rooms_alt']=$array_rooms_alt;
            if(!empty($s3_params)) {
                $row['aws_s3_url'] = $s3_url;
                $row['aws_s3']=1;
            } else {
                $row['aws_s3']=0;
            }
            $array_rooms[]=$row;
        }
    }
}
$array = array();
$query = "SELECT r.id,r.name FROM svt_rooms as r 
JOIN svt_virtualtours as v ON v.id = r.id_virtualtour
WHERE v.id = $id_virtualtour
GROUP BY r.id
ORDER BY r.priority ASC, r.id ASC";
$result = $mysqli->query($query);
if($result) {
    if($result->num_rows>0) {
        while($row=$result->fetch_array(MYSQLI_ASSOC)) {
            $array[$row['id']]=$row['name'];
        }
    }
}
$array2 = array();
$array_id_rooms = array();
$query = "SELECT list_alt FROM svt_virtualtours WHERE id=$id_virtualtour LIMIT 1;";
$result = $mysqli->query($query);
if($result) {
    if($result->num_rows==1) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        $list_alt = $row['list_alt'];
        if (!empty($list_alt)) {
            $list_alt_array = json_decode($list_alt, true);
            foreach ($list_alt_array as $item) {
                switch ($item['type']) {
                    case 'room':
                        if(array_key_exists($item['id'],$array)) {
                            array_push($array2, ["id" => $item['id'], "type" => "room", "hide"=>$item['hide'], "name" => $array[$item['id']]]);
                        }
                        array_push($array_id_rooms,$item['id']);
                        break;
                    case 'category':
                        $childrens = array();
                        foreach ($item['children'] as $children) {
                            if ($children['type'] == "room") {
                                if(array_key_exists($children['id'],$array)) {
                                    array_push($childrens, ["id" => $children['id'], "type" => "room", "hide" => $children['hide'], "name" => $array[$children['id']]]);
                                    foreach ($array_rooms as $key_t => $room_t) {
                                        if($room_t['id']==$children['id']) {
                                            $array_rooms[$key_t]['category']=$item['cat'];
                                        }
                                    }
                                }
                                array_push($array_id_rooms, $children['id']);
                            }
                        }
                        array_push($array2, ["id" => $item['id'], "type" => "category", "name" => $item['cat'], "childrens" => $childrens]);
                        break;
                }
            }
            foreach ($array as $id=>$name) {
                if(!in_array($id,$array_id_rooms)) {
                    array_push($array2,["id"=>$id,"type"=>"room","hide"=>"0","name"=>$name]);
                }
            }
        }
    }
}
ob_end_clean();
echo json_encode(array("rooms"=>$array_rooms,"permissions"=>$permissions));