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/services/generate_thumb.php
<?php
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED);
ob_start();
ini_set("memory_limit",-1);
ini_set('max_execution_time', 9999);
include_once(dirname(__FILE__)."/thumb.php");
require_once(dirname(__FILE__)."/../db/connection.php");
require_once(dirname(__FILE__)."/../backend/functions.php");
use claviska\SimpleImage;
class ThumbNailer extends SimpleImage{
    public function generateThumbnail($source,$destination,$width=300,$height=300){
        try{
            $this->fromFile($source)
                ->thumbnail($width, $height, "center")
                ->toFile($destination);
            return true;
        }
        catch(Exception $e){
            echo $e;
            return false;
        }
    }
}
$tn = new ThumbNailer();

$force_all_thumb = false;

if(isset($s3_enabled)) {
    $s3_enabled_g = $s3_enabled;
} else {
    $s3_enabled_g = false;
}

if(!isset($settings)) {
    $settings = get_settings();
}

if(isset($panorama_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/panoramas/$panorama_image_gt";
        $thumb_path =  "s3://$s3_bucket_name/viewer/panoramas/thumb/$panorama_image_gt";
        $lowres_path =  "s3://$s3_bucket_name/viewer/panoramas/lowres/$panorama_image_gt";
        $preview_path =  "s3://$s3_bucket_name/viewer/panoramas/preview/$panorama_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR.$panorama_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$panorama_image_gt;
        $lowres_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."lowres".DIRECTORY_SEPARATOR.$panorama_image_gt;
        $preview_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."preview".DIRECTORY_SEPARATOR.$panorama_image_gt;
    }
    list($width, $height, $type, $attr) = getimagesize($file_path);
    $aspct_ratio = $height/$width;
    if(!file_exists($thumb_path)) {
        $tn->generateThumbnail($file_path,$thumb_path,213,120);
        if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
            try {
                $s3Client->putObjectAcl([
                    'Bucket' => $s3_bucket_name,
                    'Key' => "viewer/panoramas/thumb/$panorama_image_gt",
                    'ACL' => 'public-read',
                ]);
            } catch (\Aws\S3\Exception\S3Exception $e) {}
        }
    }
    if(!file_exists($lowres_path)) {
        $tn->generateThumbnail($file_path,$lowres_path,1280,1280*$aspct_ratio);
        if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
            try {
                $s3Client->putObjectAcl([
                    'Bucket' => $s3_bucket_name,
                    'Key' => "viewer/panoramas/lowres/$panorama_image_gt",
                    'ACL' => 'public-read',
                ]);
            } catch (\Aws\S3\Exception\S3Exception $e) {}
        }
    }
    if(!file_exists($preview_path)) {
        $crop_width = $width * 0.5;
        $crop_height = $height * 0.5;
        $im = @imagecreatefromjpeg($file_path);
        if($im === false) {
            $im = imagecreatefrompng($file_path);
        }
        if($im != false) {
            imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$preview_path,100);
            try {
                imagedestroy($im);
            } catch (Exception $e) {}
            $tn->generateThumbnail($preview_path,$preview_path,213,120);
        }
        if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
            try {
                $s3Client->putObjectAcl([
                    'Bucket' => $s3_bucket_name,
                    'Key' => "viewer/panoramas/preview/$panorama_image_gt",
                    'ACL' => 'public-read',
                ]);
            } catch (\Aws\S3\Exception\S3Exception $e) {}
        }
    }
} else if(isset($array_panoramas_gt)) {
    foreach ($array_panoramas_gt as $panorama_image_gt) {
        if($s3_enabled_g) {
            $file_path = "s3://$s3_bucket_name/viewer/panoramas/$panorama_image_gt";
            $thumb_path =  "s3://$s3_bucket_name/viewer/panoramas/thumb/$panorama_image_gt";
            $lowres_path =  "s3://$s3_bucket_name/viewer/panoramas/lowres/$panorama_image_gt";
            $preview_path =  "s3://$s3_bucket_name/viewer/panoramas/preview/$panorama_image_gt";
        } else {
            $path = dirname(__FILE__).'/../viewer/';
            $file_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR.$panorama_image_gt;
            $thumb_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$panorama_image_gt;
            $lowres_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."lowres".DIRECTORY_SEPARATOR.$panorama_image_gt;
            $preview_path = $path.DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."preview".DIRECTORY_SEPARATOR.$panorama_image_gt;
        }
        list($width, $height, $type, $attr) = getimagesize($file_path);
        $aspct_ratio = $height/$width;
        if(!file_exists($thumb_path)) {
            $tn->generateThumbnail($file_path,$thumb_path,213,120);
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/panoramas/thumb/$panorama_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
        if(!file_exists($lowres_path)) {
            $tn->generateThumbnail($file_path,$lowres_path,1280,1280*$aspct_ratio);
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/panoramas/lowres/$panorama_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
        if(!file_exists($preview_path)) {
            $crop_width = $width * 0.5;
            $crop_height = $height * 0.5;
            $im = @imagecreatefromjpeg($file_path);
            if($im === false) {
                $im = imagecreatefrompng($file_path);
            }
            if($im != false) {
                imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$preview_path,100);
                try {
                    imagedestroy($im);
                } catch (Exception $e) {}
                $tn->generateThumbnail($preview_path,$preview_path,213,120);
            }
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/panoramas/preview/$panorama_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
    }
} else if(isset($map_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/maps/$map_image_gt";
        $thumb_path = "s3://$s3_bucket_name/viewer/maps/thumb/$map_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."maps".DIRECTORY_SEPARATOR.$map_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."maps".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$map_image_gt;
    }
    if(!file_exists($thumb_path)) {
        list($width, $height, $type, $attr) = getimagesize($file_path);
        $crop_width = $width * 0.5;
        $crop_height = $height * 0.5;
        $ext = pathinfo($file_path, PATHINFO_EXTENSION);
        $im = false;
        switch($ext) {
            case 'png':
                $im = @imagecreatefrompng($file_path);
                break;
            case 'jpg':
            case 'jpeg':
                $im = @imagecreatefromjpeg($file_path);
                if($im === false) {
                    $im = @imagecreatefrompng($file_path);
                }
                break;
        }
        if($im != false) {
            imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$thumb_path,100);
            try {
                imagedestroy($im);
            } catch (Exception $e) {}
            $tn->generateThumbnail($thumb_path,$thumb_path,213,120);
        }
        if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
            try {
                $s3Client->putObjectAcl([
                    'Bucket' => $s3_bucket_name,
                    'Key' => "viewer/maps/thumb/$map_image_gt",
                    'ACL' => 'public-read',
                ]);
            } catch (\Aws\S3\Exception\S3Exception $e) {}
        }
    }
} else if(isset($gallery_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/gallery/$gallery_image_gt";
        $thumb_path = "s3://$s3_bucket_name/viewer/gallery/thumb/$gallery_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."gallery".DIRECTORY_SEPARATOR.$gallery_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."gallery".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$gallery_image_gt;
    }
    if(@is_array(getimagesize($file_path))){
        if(!file_exists($thumb_path)) {
            $tn->generateThumbnail($file_path,$thumb_path,200,200);
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/gallery/thumb/$gallery_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
    }
} else if(isset($content_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/content/$content_image_gt";
        $thumb_path = "s3://$s3_bucket_name/viewer/content/thumb/$content_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."content".DIRECTORY_SEPARATOR.$content_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."content".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$content_image_gt;
    }
    if(@is_array(getimagesize($file_path))){
        if(!file_exists($thumb_path)) {
            $tn->generateThumbnail($file_path,$thumb_path,200,200);
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/content/thumb/$content_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
    }
} else if(isset($media_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/media/$media_image_gt";
        $thumb_path = "s3://$s3_bucket_name/viewer/media/thumb/$media_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."media".DIRECTORY_SEPARATOR.$media_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."media".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$media_image_gt;
    }
    if(@is_array(getimagesize($file_path))){
        if(!file_exists($thumb_path)) {
            $tn->generateThumbnail($file_path,$thumb_path,200,200);
            if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
                try {
                    $s3Client->putObjectAcl([
                        'Bucket' => $s3_bucket_name,
                        'Key' => "viewer/media/thumb/$media_image_gt",
                        'ACL' => 'public-read',
                    ]);
                } catch (\Aws\S3\Exception\S3Exception $e) {}
            }
        }
    }
} else if(isset($product_image_gt)) {
    if($s3_enabled_g) {
        $file_path = "s3://$s3_bucket_name/viewer/products/$product_image_gt";
        $thumb_path = "s3://$s3_bucket_name/viewer/products/thumb/$product_image_gt";
    } else {
        $path = dirname(__FILE__).'/../viewer/';
        $file_path = $path.DIRECTORY_SEPARATOR."products".DIRECTORY_SEPARATOR.$product_image_gt;
        $thumb_path = $path.DIRECTORY_SEPARATOR."products".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR.$product_image_gt;
    }
    if(!file_exists($thumb_path)) {
        list($width, $height, $type, $attr) = getimagesize($file_path);
        $crop_width = $width * 0.5;
        $crop_height = $height * 0.5;
        $im = @imagecreatefromjpeg($file_path);
        if($im === false) {
            $im = imagecreatefrompng($file_path);
        }
        if($im != false) {
            imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$thumb_path,100);
            try {
                imagedestroy($im);
            } catch (Exception $e) {}
            $tn->generateThumbnail($thumb_path,$thumb_path,200,200);
        }
        if($s3_enabled_g && $settings['aws_s3_type']=='digitalocean') {
            try {
                $s3Client->putObjectAcl([
                    'Bucket' => $s3_bucket_name,
                    'Key' => "viewer/products/thumb/$product_image_gt",
                    'ACL' => 'public-read',
                ]);
            } catch (\Aws\S3\Exception\S3Exception $e) {}
        }
    }
} else if($force_all_thumb) {
    $s3_enabled = false;
    $query = "SELECT aws_s3_enabled,aws_s3_bucket,aws_s3_key,aws_s3_region,aws_s3_secret FROM svt_settings;";
    $result = $mysqli->query($query);
    if($result) {
        if($result->num_rows==1) {
            $row = $result->fetch_array(MYSQLI_ASSOC);
            if($row['aws_s3_enabled'] && !empty($row['aws_s3_region']) && !empty($row['aws_s3_key']) && !empty($row['aws_s3_secret']) && !empty($row['aws_s3_bucket'])) {
                $s3_enabled = true;
            }
        }
    }
    $path = dirname(__FILE__).'/../viewer/panoramas/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            $file_ext = $fileinfo->getExtension();
            if($file_ext=='json') continue;
            $thumb_path = str_replace(DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
            $lowres_path = str_replace(DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."lowres".DIRECTORY_SEPARATOR,$file_path);
            $preview_path = str_replace(DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."panoramas".DIRECTORY_SEPARATOR."preview".DIRECTORY_SEPARATOR,$file_path);
            list($width, $height, $type, $attr) = getimagesize($file_path);
            $aspct_ratio = $height/$width;
            if(!file_exists($thumb_path)) {
                $tn->generateThumbnail($file_path,$thumb_path,213,120);
            }
            if(!file_exists($lowres_path)) {
                $tn->generateThumbnail($file_path,$lowres_path,1280,1280*$aspct_ratio);
            }
            if(!file_exists($preview_path)) {
                $crop_width = $width * 0.5;
                $crop_height = $height * 0.5;
                $im = @imagecreatefromjpeg($file_path);
                if($im === false) {
                    $im = imagecreatefrompng($file_path);
                }
                if($im != false) {
                    imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$preview_path,100);
                    try {
                        imagedestroy($im);
                    } catch (Exception $e) {}
                    $tn->generateThumbnail($preview_path,$preview_path,213,120);
                }
            }
        }
    }

    $path = dirname(__FILE__).'/../viewer/maps/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            $thumb_path = str_replace(DIRECTORY_SEPARATOR."maps".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."maps".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
            if(!file_exists($thumb_path)) {
                list($width, $height, $type, $attr) = getimagesize($file_path);
                $crop_width = $width * 0.5;
                $crop_height = $height * 0.5;
                $ext = pathinfo($file_path, PATHINFO_EXTENSION);
                $im = false;
                switch($ext) {
                    case 'png':
                        $im = @imagecreatefrompng($file_path);
                        break;
                    case 'jpg':
                    case 'jpeg':
                        $im = @imagecreatefromjpeg($file_path);
                        if($im === false) {
                            $im = @imagecreatefrompng($file_path);
                        }
                        break;
                }
                if($im != false) {
                    imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$thumb_path,100);
                    try {
                        imagedestroy($im);
                    } catch (Exception $e) {}
                    $tn->generateThumbnail($thumb_path,$thumb_path,213,120);
                }
            }
        }
    }

    $path = dirname(__FILE__).'/../viewer/gallery/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            if(@is_array(getimagesize($file_path))){
                $thumb_path = str_replace(DIRECTORY_SEPARATOR."gallery".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."gallery".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
                if(!file_exists($thumb_path)) {
                    $tn->generateThumbnail($file_path,$thumb_path,200,200);
                }
            }
        }
    }

    $path = dirname(__FILE__).'/../viewer/content/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            $file_ext = $fileinfo->getExtension();
            if($file_ext=='json') continue;
            if(@is_array(getimagesize($file_path))){
                $thumb_path = str_replace(DIRECTORY_SEPARATOR."content".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."content".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
                if(!file_exists($thumb_path)) {
                    $tn->generateThumbnail($file_path,$thumb_path,200,200);
                }
            }
        }
    }

    $path = dirname(__FILE__).'/../viewer/media/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            if(@is_array(getimagesize($file_path))){
                $thumb_path = str_replace(DIRECTORY_SEPARATOR."media".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."media".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
                if(!file_exists($thumb_path)) {
                    $tn->generateThumbnail($file_path,$thumb_path,200,200);
                }
            }
        }
    }

    $path = dirname(__FILE__).'/../viewer/products/';
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && ($fileinfo->isFile())) {
            $file_path = $fileinfo->getRealPath();
            $file_name = $fileinfo->getBasename();
            $thumb_path = str_replace(DIRECTORY_SEPARATOR."products".DIRECTORY_SEPARATOR,DIRECTORY_SEPARATOR."products".DIRECTORY_SEPARATOR."thumb".DIRECTORY_SEPARATOR,$file_path);
            if(!file_exists($thumb_path)) {
                list($width, $height, $type, $attr) = getimagesize($file_path);
                $crop_width = $width * 0.5;
                $crop_height = $height * 0.5;
                $im = @imagecreatefromjpeg($file_path);
                if($im === false) {
                    $im = imagecreatefrompng($file_path);
                }
                if($im != false) {
                    imagejpeg(cropAlign($im, $crop_width, $crop_height, 'center', 'middle',$width,$height),$thumb_path,100);
                    try {
                        imagedestroy($im);
                    } catch (Exception $e) {}
                    $tn->generateThumbnail($thumb_path,$thumb_path,200,200);
                }
            }
        }
    }

}

ob_end_clean();

function cropAlign($image, $cropWidth, $cropHeight, $horizontalAlign, $verticalAlign, $width, $height) {
    $horizontalAlignPixels = calculatePixelsForAlign($width, $cropWidth, $horizontalAlign);
    $verticalAlignPixels = calculatePixelsForAlign($height, $cropHeight, $verticalAlign);
    return imageCrop($image, [
        'x' => $horizontalAlignPixels[0],
        'y' => $verticalAlignPixels[0],
        'width' => $horizontalAlignPixels[1],
        'height' => $verticalAlignPixels[1]
    ]);
}

function calculatePixelsForAlign($imageSize, $cropSize, $align) {
    switch ($align) {
        case 'left':
        case 'top':
            return [0, min($cropSize, $imageSize)];
        case 'right':
        case 'bottom':
            return [max(0, $imageSize - $cropSize), min($cropSize, $imageSize)];
        case 'center':
        case 'middle':
            return [
                max(0, floor(($imageSize / 2) - ($cropSize / 2))),
                min($cropSize, $imageSize),
            ];
        default: return [0, $imageSize];
    }
}

function png2jpg($originalFile, $outputFile, $quality) {
    $image = imagecreatefrompng($originalFile);
    imagejpeg($image, $outputFile, $quality);
    imagedestroy($image);
}