View file apps/native/ajax/swift/content.php

File size: 13.54Kb
<?php 
# @*************************************************************************@
# @ Software author: Mansur Altamirov (Mansur_TL)                           @
# @ Author_url 1: https://www.instagram.com/mansur_tl                       @
# @ Author_url 2: http://codecanyon.net/user/mansur_tl                      @
# @ Author E-mail: vayart.help@gmail.com                                    @
# @*************************************************************************@
# @ ColibriSM - The Ultimate Modern Social Media Sharing Platform           @
# @ Copyright (c) 2020 - 2021 ColibriSM. All rights reserved.               @
# @*************************************************************************@


if ($cl["config"]["swift_system_status"] == "on") {
    if ($action == 'upload_swift_image') {
        if (empty($cl["is_logged"])) {
            $data['status'] = 400;
            $data['error']  = 'Invalid access token';
        }
        else {
            $data['err_code'] = "invalid_req_data";
            $data['status']   = 400;
            $swift_data       = $me['swift'];

            if (not_empty($_FILES['image']) && not_empty($_FILES['image']['tmp_name'])) {
            
                if (cl_can_swift($swift_data)) {

                    if (not_empty($me["last_swift"]) && isset($swift_data[$me["last_swift"]])) {
                        $swift_data = cl_delete_swift($me["last_swift"]);
                    }

                    $file_info      = array(
                        'file'      => $_FILES['image']['tmp_name'],
                        'size'      => $_FILES['image']['size'],
                        'name'      => $_FILES['image']['name'],
                        'type'      => $_FILES['image']['type'],
                        'file_type' => 'image',
                        'folder'    => 'images',
                        'slug'      => 'swift',
                        'allowed'   => 'jpg,png,jpeg,gif'
                    );

                    $file_upload = cl_upload($file_info);

                    if (not_empty($file_upload['filename'])) {
                        $swift_id              = cl_genkey(16, 16);
                        $swift_data[$swift_id] = array(
                            "views"   => array(),
                            "time"    => time(),
                            "type"    => "image",
                            "status"  => "inactive",
                            "media"   => array(
                                "src" => $file_upload['filename']
                            )
                        );

                        $data['status'] = 200;
                        $data['img']    = array(
                            "url"       => cl_get_media($file_upload['filename'])
                        );

                        cl_update_user_data($me["id"], array(
                            "swift"      => cl_minify_js(json($swift_data, true)),
                            "last_swift" => $swift_id
                        ));
                    }
                }
                else {
                    $data['err_code'] = "total_limit_exceeded";
                    $data['status']   = 400;
                }
            }
        }
    }

    else if ($action == 'upload_swift_video') {
        if (empty($cl["is_logged"])) {
            $data['status'] = 400;
            $data['error']  = 'Invalid access token';
        }
        else {
            $data['err_code'] = "invalid_req_data";
            $data['status']   = 400;
            $swift_data       = $me['swift'];

            if (not_empty($_FILES['video']) && not_empty($_FILES['video']['tmp_name'])) {
            
                if (cl_can_swift($swift_data)) {

                    if (not_empty($me["last_swift"]) && isset($swift_data[$me["last_swift"]])) {
                        $swift_data = cl_delete_swift($me["last_swift"]);
                    }

                    $video_duration      = 10;
                    $max_swift_dur       = 10;
                    $file_info           = array(
                        'file'           => $_FILES['video']['tmp_name'],
                        'size'           => $_FILES['video']['size'],
                        'name'           => $_FILES['video']['name'],
                        'type'           => $_FILES['video']['type'],
                        'file_type'      => 'video',
                        'folder'         => 'videos',
                        'slug'           => 'swift',
                        'allowed'        => 'mp4,mov,3gp,webm',
                        'aws_uploadfile' => 'N'
                    );

                    $file_upload = cl_upload($file_info);

                    if (not_empty($file_upload['filename'])) {

                        try {
                            require_once(cl_full_path("core/libs/ffmpeg-php/vendor/autoload.php"));
                            require_once(cl_full_path("core/libs/getID3/getid3/getid3.php"));

                            $ffmpeg_binary = ($config['ffmpeg_binary'] == "/core/libs/ffmpeg/ffmpeg") ? cl_full_path($config['ffmpeg_binary']) : $config['ffmpeg_binary']; 
                            $ffmpeg        = new FFmpeg($ffmpeg_binary);
                            $getID3        = new getID3;
                            $video_file    = $getID3->analyze($file_upload['filename']);

                            if (isset($video_file["playtime_seconds"])) {

                                $ffmpeg           = new FFmpeg($ffmpeg_binary);
                                $video_duration   = intval($video_file["playtime_seconds"]);
                                $video_format     = $video_file["fileformat"];
                                $swift_video_path = cl_gen_path(array(
                                    "folder"      => "videos",
                                    "file_ext"    => "mp4",
                                    "file_type"   => "video",
                                    "slug"        => "swift"
                                ));

                                if (is_posnum($video_duration) && $video_duration > $max_swift_dur) {

                                    $ffmpeg->input($file_upload['filename']);
                                    $ffmpeg->set('-ss', '0');
                                    $ffmpeg->set('-to', '10');
                                    $ffmpeg->set('-c:v', 'copy');
                                    $ffmpeg->set('-c:a', 'copy');

                                    if ($video_format != 'mp4') {
                                        $ffmpeg->set('-vcodec', 'libx264');
                                        $ffmpeg->forceFormat('mp4');
                                    }
                                    
                                    $ffmpeg->output($swift_video_path)->ready();

                                    cl_delete_loc_media($file_upload['filename']);
                                    $file_upload['filename'] = $swift_video_path;

                                    $video_duration = $max_swift_dur;
                                }
                            }
                        } 

                        catch (Exception $e) {
                            $data["error"] = $e->getMessage();
                            $upload_fail   = true;
                        }

                        if (empty($upload_fail)) {
                            $swift_id              = cl_genkey(16, 16);
                            $swift_data[$swift_id] = array(
                                "views"            => array(),
                                "time"             => time(),
                                "type"             => "video",
                                "status"           => "inactive",
                                "media"            => array(
                                    "source"       => $file_upload['filename'],
                                    "duration"     => $video_duration
                                )
                            );

                            $data['status'] = 200;
                            $data['video']  = array(
                                "source"    => cl_get_media($file_upload['filename'])
                            );

                            cl_update_user_data($me["id"], array(
                                "swift"      => cl_minify_js(json($swift_data, true)),
                                "last_swift" => $swift_id
                            ));

                            if ($cl['config']['as3_storage'] == 'on') {
                                cl_upload2s3($file_upload['filename']);
                            }
                        }
                    }
                }
                else {
                    $data['err_code'] = "total_limit_exceeded";
                    $data['status']   = 400;
                }
            }
        }
    }

    else if ($action == 'delete_swift_image') {
        if (empty($cl["is_logged"])) {
            $data['status'] = 400;
            $data['error']  = 'Invalid access token';
        }
        else {
            $data['err_code'] = "invalid_req_data";
            $data['status']   = 400;
            $swift_data       = $me['swift'];

            if (not_empty($me["last_swift"]) && isset($swift_data[$me["last_swift"]])) {
                $swift_data     = cl_delete_swift($me["last_swift"]);
                $data['status'] = 200;

                cl_update_user_data($me["id"], array(
                    "swift"      => cl_minify_js(json($swift_data, true)),
                    "last_swift" => ""
                ));
            } 
        }
    }

    else if ($action == 'delete_swift_video') {
        if (empty($cl["is_logged"])) {
            $data['status'] = 400;
            $data['error']  = 'Invalid access token';
        }
        else {
            $data['err_code'] = "invalid_req_data";
            $data['status']   = 400;
            $swift_data       = $me['swift'];

            if (not_empty($me["last_swift"]) && isset($swift_data[$me["last_swift"]])) {
                $swift_data     = cl_delete_swift($me["last_swift"]);
                $data['status'] = 200;

                cl_update_user_data($me["id"], array(
                    "swift"      => cl_minify_js(json($swift_data, true)),
                    "last_swift" => ""
                ));
            } 
        }
    }

    else if ($action == 'publish_new_swift') {
        if (empty($cl["is_logged"])) {
            $data['status'] = 400;
            $data['error']  = 'Invalid access token';
        }
        else {
            $data['err_code'] = 0;
            $data['status']   = 400;
            $swift_data       = $me['swift'];
            $swift_text       = fetch_or_get($_POST['swift_text'], "");
            $swift_text       = cl_croptxt($swift_text, 200);

            if (not_empty($me["last_swift"]) && isset($swift_data[$me["last_swift"]])) {
                $swift_data[$me["last_swift"]]["status"]   = "active";
                $swift_data[$me["last_swift"]]["time"]     = time();
                $swift_data[$me["last_swift"]]["exp_time"] = (time() + (24 * 3600));
                $swift_data[$me["last_swift"]]["text"]     = "";

                if (not_empty($swift_text)) {
                    $swift_data[$me["last_swift"]]["text"] = cl_text_secure($swift_text);
                }

                cl_update_user_data($me["id"], array(
                    "swift"        => cl_minify_js(json($swift_data, true)),
                    "last_swift"   => "",
                    "swift_update" => (time() + (24 * 3600))
                ));

                $data['status'] = 200;
            }
        }
    }

    else if($action == 'delete_swift') {
        $data['err_code'] = "invalid_req_data";
        $data['status']   = 400;
        $swift_data       = $me['swift'];
        $swift_id         = fetch_or_get($_POST["swid"], false);

        if (is_array($swift_data) && isset($swift_data[$swift_id])) {
            $swift_data     = cl_delete_swift($swift_id);
            $data['status'] = 200;
            $junked_swifts  = array();

            foreach ($swift_data as $i => $row) {
                if (cl_is_junked_swift($row)) {
                    array_push($junked_swifts, $i);
                }
            }

            if (not_empty($junked_swifts)) {
                foreach ($junked_swifts as $junked_swid) {
                    $swift_data = cl_delete_swift($junked_swid);
                }
            }
            
            cl_update_user_data($me["id"], array(
                "swift" => cl_minify_js(json($swift_data, true))
            ));
        }
    }

    else if($action == 'swift_view') {
        $data['err_code'] = "invalid_req_data";
        $data['status']   = 400;
        $swift_id         = fetch_or_get($_POST["swid"], false);
        $swift_user_id    = fetch_or_get($_POST["user_id"], false);

        if (not_empty($swift_id) && is_posnum($swift_user_id) && $swift_user_id != $me["id"]) {
            $swift_udata = cl_raw_user_data($swift_user_id);

            if (not_empty($swift_udata)) {
                $swift_data = cl_init_swift($swift_udata["swift"]);

                if (is_array($swift_data) && isset($swift_data[$swift_id])) {

                    if (in_array($me["id"], $swift_data[$swift_id]["views"]) != true) {
                        $swift_data[$swift_id]["views"][$me["id"]] = time();

                        cl_update_user_data($swift_user_id, array(
                            "swift" => cl_minify_js(json($swift_data, true))
                        ));

                        $data['status'] = 200;
                    }
                }
            }
        }
    }
}