<?php
class FO extends Base {

    public static function index($page) {
        
        $p = Flight::page();
        $pages = $p->menu('fo_video', '/porno-obmenik-video', $page, "WHERE `moderation` = '0'", FO_PERPAGE);
        
        $files = Flight::db()
                ->query("SELECT *, (SELECT COUNT(*) FROM fo_comments WHERE fo_comments.parent = fo_video.id) AS count_comments FROM `fo_video` WHERE `fo_video`.`moderation` = '0' ORDER BY `fo_video`.`id` DESC " . $p->limit())
                ->fetchAll();
        
        if (!empty($_SESSION['message'])) {
            $message = $_SESSION['message'];
            unset($_SESSION['message']);
        }
        

            $video_moderation = Flight::db()
            ->query("SELECT COUNT(*) FROM `fo_video` WHERE moderation = '1'")
            ->fetchColumn();

        
      
        
        parent::view('fo/files', [
        'title'       => 'Порно обменник видео бесплатно, файлообменник частные порно ролики, добавь свой видео на сайт бесплатно',
        'description' => 'Секс Порно обменник видео бесплатно, файлообменник ххх частные порно ролики, ты тоже добавь свой видео на сайт бесплатно',
        'keywords'    => 'обменник, порно, видео, файлообменник, добивить, бесплатно, свой, ххх, секс, ролик, обменник, смартфон',
        'files' => $files,
        'fo_status' => FO_STATUS,
        'nav'         => '<div class="new"><b>Показать самые:</b> <a href="/porno-obmenik-video/top/views/">Просматриваемые</a> / <a href="/porno-obmenik-video/top/down/">Скачиваемые</a> / <a href="/porno-obmenik-video/top/rating/">Популярные</a> / Новые</div>',
        'pagination' => $pages,
        'message' => (!empty($message) ? $message : ''),
        'err' => (!empty($err) ? $err : array()),
        'video_moderation' => $video_moderation
        ]);        
    }
    
    public static function top($sort, $page) {

            $video_moderation = Flight::db()
            ->query("SELECT COUNT(*) FROM `fo_video` WHERE moderation = '1'")
            ->fetchColumn();
        switch ($sort) {
            
            case 'new':
                $p = Flight::page();
                
                $pages = $p->menu('fo_video', '/porno-obmenik-video/top/new', $page, "WHERE `moderation` = '0'", FO_PERPAGE);
                
                $files = Flight::db()
                ->query("SELECT *, (SELECT COUNT(*) FROM fo_comments WHERE fo_comments.parent = fo_video.id) AS count_comments FROM `fo_video` WHERE `fo_video`.`moderation` = '0' ORDER BY `fo_video`.`id` DESC " . $p->limit())
                ->fetchAll();
                
                parent::view('fo/files', [
                'files'       => $files,
                'title'       => 'Новые порно видео пользователей в файлообменнике частные новинки',
                'description' => 'новинки видео, свежые ролики пользователей, добавь свой новый секс в обменник',
                'keywords'    => 'пользователи, я, добавить, новый, видео, ххх, на, сайт, бесплатно, обменник, файлов',
                'pagination'  => $pages,
                'top_type'    => 'new',
                'nav'         => '<div class="new"><b>Показать самые:</b> <a href="/porno-obmenik-video/top/views/">Просматриваемые</a> / <a href="/porno-obmenik-video/top/down/">Скачиваемые</a> / <a href="/porno-obmenik-video/top/rating/">Популярные</a> / Новые</div>',
                'fo_status' => FO_STATUS,
                'message' => (!empty($message) ? $message : ''),
                'err' => (!empty($err) ? $err : array()),
                'video_moderation' => $video_moderation
                ]);        
                break;
            
            case 'views':
                
                $p = Flight::page();
                
                $pages = $p->menu('fo_video', '/porno-obmenik-video/top/views', $page, "WHERE `moderation` = '0'", FO_PERPAGE);
                
                $files = Flight::db()
                ->query("SELECT *, (SELECT COUNT(*) FROM fo_comments WHERE fo_comments.parent = fo_video.id) AS count_comments FROM `fo_video` WHERE `fo_video`.`moderation` = '0' ORDER BY `fo_video`.`view_count` DESC " . $p->limit())
                ->fetchAll();
                
                parent::view('fo/files', [
                'files'       => $files,
                'title'       => 'Просматриваемые видео пользователей сайта',
                'description' => 'Самые просматриваемые видео пользователей сайта, смотрят видео посетителей обменника ххх',
                'keywords'    => 'самые, просматриваемые, смотреть, смотрят, больше, посетителей, видео, ххх, файлообменник, добавить, секс',
                'pagination'  => $pages,
                'top_type'    => 'new',
                'nav'         => '<div class="new"><b>Показать самые:</b> Просматриваемые / <a href="/porno-obmenik-video/top/down/">Скачиваемые</a> / <a href="/porno-obmenik-video/top/rating/">Популярные</a> / <a href="/porno-obmenik-video/top/new/">Новые</a></div>',
                'fo_status' => FO_STATUS,
                'message' => (!empty($message) ? $message : ''),
                'err' => (!empty($err) ? $err : array()),
                'video_moderation' => $video_moderation
                ]); 
                break;
                
            case 'down':
                $p = Flight::page();
                
                $pages = $p->menu('fo_video', '/porno-obmenik-video/top/views', $page, "WHERE `moderation` = '0'", FO_PERPAGE);
                
                $files = Flight::db()
                ->query("SELECT *, (SELECT COUNT(*) FROM fo_comments WHERE fo_comments.parent = fo_video.id) AS count_comments FROM `fo_video` WHERE `fo_video`.`moderation` = '0' ORDER BY `fo_video`.`load_count` DESC " . $p->limit())
                ->fetchAll();
                
                parent::view('fo/files', [
                'files'       => $files,
                'title'       => 'Скачиваемые видео посетителей сайта, скачивают файлы из обменника',
                'description' => 'больше всего Скачиваемые видео посетителей сайта, скачивают файлы из обменника, скачать видео из файлообменника бесплатно на смартфон',
                'keywords'    => 'скачать, видео, секс, порнуха, эротика, смартфон, ххх',
                'pagination'  => $pages,
                'top_type'    => 'down',
                'nav'         => '<div class="new"><b>Показать самые:</b> <a href="/porno-obmenik-video/top/views/">Просматриваемые</a> / Скачиваемые / <a href="/porno-obmenik-video/top/rating/">Популярные</a> / <a href="/porno-obmenik-video/top/new/">Новые</a></div>',
                'fo_status' => FO_STATUS,
                'message' => (!empty($message) ? $message : ''),
                'err' => (!empty($err) ? $err : array()),
                'video_moderation' => $video_moderation
                ]);
                break;
                
            default:
                $p = Flight::page();
                
                $pages = $p->menu('fo_video', '/porno-obmenik-video/top/views', $page, "WHERE `moderation` = '0'", FO_PERPAGE);
                
                $files = Flight::db()
                ->query("SELECT *, (SELECT COUNT(*) FROM fo_comments WHERE fo_comments.parent = fo_video.id) AS count_comments FROM `fo_video` WHERE `fo_video`.`moderation` = '0' ORDER BY `fo_video`.`rating` DESC " . $p->limit())
                ->fetchAll();
                
                parent::view('fo/files', [
                'files'       => $files,
                'title'       => 'Популярные порно видео пользователей файлообменник, самые лучшие ролики ххх',
                'description' => 'Топ супер лучшие Популярные порно видео пользователей файлообменник, самые лучшие ролики секс обменника ххх',
                'keywords'    => 'топ, супер, лучшее, популярное, видео, секс, обменник',
                'pagination'  => $pages,
                'top_type'    => 'rating',
                'nav'         => '<div class="new"><b>Показать самые:</b> <a href="/porno-obmenik-video/top/views/">Просматриваемые</a> / <a href="/porno-obmenik-video/top/down/">Скачиваемые</a> / Популярные / <a href="/porno-obmenik-video/top/new/">Новые</a></div>',
                'fo_status' => FO_STATUS,
                'message' => (!empty($message) ? $message : ''),
                'err' => (!empty($err) ? $err : array()),
                'video_moderation' => $video_moderation
                ]);
                break;
            
        }        
    }
    
    public static function upload() {
        
        global $FO_whiteList;
        
        if (!FO_STATUS) {
            header("Location: /");
            exit;
        }
        
        if (!empty($_POST)) {
            
            $ip = $_SERVER['REMOTE_ADDR'];
            $agent = $_SERVER['HTTP_USER_AGENT'];
            $frame = 25;
            $max_size = 1048576 * FO_MAXSIZE;
            $root = $_SERVER['DOCUMENT_ROOT'];
            $err = array();
            $file = $_FILES['file'];
            $name = trim(htmlspecialchars($_POST['name']));
            $name_f = trim(htmlspecialchars($_POST['name_f']));
            $desc_f = trim(htmlspecialchars($_POST['desc_f']));
            $comments = (empty($_POST['comments']) ? '' : trim(htmlspecialchars($_POST['comments'])));
            $captcha = $_POST['captcha'];
            $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
            $size = $file['size'];
            
            if ($_SESSION['rand_code'] != $captcha) {
                $err[] = '<b><span style="color: red;">Проверочное число введено не верно</span></b>';
            }
            
            if (empty($file['name'])) {
                $err[] = '<b><span style="color: red;">Не выбран файл</span></b>';
            }
            
            if (empty($name)) {
                $err[] = '<b><span style="color: red;">Заполните поле "Ваше имя"</span></b>';
            }
            
            if (empty($name_f)) {
                $err[] = '<b><span style="color: red;">Заполните поле "Название видео"</span></b>';
            }
            
            if (empty($desc_f)) {
                $err[] = '<b><span style="color: red;">Заполните поле "Описание видео"</span></b>';
            }
            
            if (empty($captcha)) {
                $err[] = '<b><span style="color: red;">Не введен проверочный код</span></b>';
            }
            
            if (!in_array($ext, $FO_whiteList)) {
                $err[] = '<b><span style="color: red;">Не допустимое расширение файла</span></b>';
            }
            
            if ($file['size'] > $max_size) {
                $err[] = '<b><span style="color: red;">Размер файла превышает ' . FO_MAXSIZE . ' мб</span></b>';
            }
            
            if (strlen($desc_f) > 600) {
                $err[] = '<b><span style="color: red;">Длина описания превышает 600 символов</span></b>';
            }
            
            if (empty($err)) {
                // Все ОК
                
                
                $alias = Base::str2url($name_f);
                $alias = Base::uniqu_alias($alias);
                $alias_path = PREFIX . $alias;                
                
                move_uploaded_file($file['tmp_name'], $root . '/public/video_fo/' . $alias_path . '.' . $ext);

                $img_path = $root . '/public/screen_fo/'.$alias.'.png';
                
                $movie = new ffmpeg_movie($root . '/public/video_fo/' . $alias_path . '.' . $ext);
                $image = $movie->getFrame($frame);
                $selfimg = $image->toGDImage();
    
                imagepng($selfimg, $img_path);
                imagedestroy($selfimg);
    
                parent::resize($img_path, $img_path, 175, 144);
                parent::watermark($img_path, $img_path);
    
                $duration = $movie->getDuration();
                
                $sizing = $movie->getFrameHeight().'x'.$movie->getFrameWidth();
                

                $sett = Flight::db()
                ->query("SELECT cron_del FROM `fo_settings`")
                ->fetch();
                
                $sql = "
                INSERT INTO fo_video
                (alias, ext, size, file_name, file_desc, file_comments, user_name, user_ip, user_agent, duration, sizing, date_upload, last_load, rating, moderation, cron_del)
                VALUES
                ('{$alias}', '{$ext}', '{$size}', :name_f, :desc_f, :comments, :name, '{$ip}', :uagent, '{$duration}', '{$sizing}', UNIX_TIMESTAMP(), 0, 0, '".FO_MODER."', '".$sett['cron_del']."')
                ";
                             
                $result = Flight::db()->prepare($sql);
                $result->bindValue(":name_f", $name_f, PDO::PARAM_STR);
                $result->bindValue(":desc_f", $desc_f, PDO::PARAM_STR);
                $result->bindValue(":comments", $comments, PDO::PARAM_INT);
                $result->bindValue(":name", $name, PDO::PARAM_STR);
                $result->bindValue(":uagent", $agent, PDO::PARAM_STR);
                $result->execute(); 
                
                if (FO_MODER) {
                    $_SESSION['message'] = '<b><span style="color: green;">Ваше видео успешно загружено! видео появится на сайте после проверки администрации сайта!</span></b>';
                } else {
                    $_SESSION['message'] = '<b><span style="color: green;">Ваше видео успешно загружено!</span></b>';
                }
                
                $string = '';
                
                for ($i = 0; $i < 5; $i++) {
                	// this numbers refer to numbers of the ascii table (lower case)
                	$string .= chr(rand(97, 122));
                }
                
                $_SESSION['rand_code'] = $string;
                
                $_SESSION['captcha_time'] = time() + 600;
                
                header("Location: /porno-obmenik-video");
                exit;
            }
        }
        
        $post = array();
        $post['name'] = (!empty($_POST['name']) && !empty($err) ? trim(htmlspecialchars($_POST['name'])) : NULL);
        $post['name_f'] = (!empty($_POST['name_f']) && !empty($err) ? trim(htmlspecialchars($_POST['name_f'])) : NULL);
        $post['desc_f'] = (!empty($_POST['desc_f']) && !empty($err) ? trim(htmlspecialchars($_POST['desc_f'])) : NULL);
        $post['comments'] = (!empty($_POST['comments']) && !empty($err) ? 'checked' : NULL);
        
        parent::view('fo/upload', [
        'title'       => 'Добавить свое видео в порно обменник сайта, частное секс видео добавить личное, файлообменник бесплатно',
        'description' => 'Бесплатно Добавить свое видео в порно обменник сайта, частное секс видео добавить личное, файлообменник бесплатно, файл на сайт свой',
        'keywords'    => 'бесплатно, добавить, видео, в, обменник, загрузить, upload, на, сайт, видео, ххх, личное, секс, файлообменник,',
        'maxsize' => FO_MAXSIZE,
        'post' => $post,
        'err' => (!empty($err) ? $err : array()),
        'message' => ''
        ]);
        
    }
    
    public static function video($url, $page) {
        
        
        $result = Flight::db()->prepare("SELECT * FROM `fo_video` WHERE alias = :url".(!empty($_COOKIE['admin_verify']) && $_COOKIE['admin_verify'] == md5(PASSWORD)  ? " && moderation = '0'" : NULL)."");
        $result->bindValue(":url", $url, PDO::PARAM_STR);
        $result->execute(); 
        $file = $result->fetch(PDO::FETCH_ASSOC);
        
        if (empty($file)) {
            header("Location: /");
            exit;
        }

        if (Flight::request()->cookies->uniq != 'fo_' . $file['id']) {
                
            Flight::db()
            ->query("UPDATE `fo_video` SET `view_count` = `view_count` + 1 WHERE `id` = {$file['id']}");
            
            setcookie('uniq', 'fo_' . $file['id'], time() + 3600 * 24, '/');
        
        }

        /* Рейтинг */
        $check = Flight::db()
        ->query("SELECT id FROM `fo_rating_list` WHERE ip = '{$_SERVER['REMOTE_ADDR']}' && video_id = '{$file['id']}'")
        ->fetchAll();
        
        /* Счетчик рейтинга (+ и -)*/
        $total_plus = Flight::db()
        ->query("SELECT id FROM `fo_rating_list` WHERE video_id = '{$file['id']}' && type = 'plus'")
        ->fetchAll();
        $total_plus = count($total_plus);
        
        $total_minus = Flight::db()
        ->query("SELECT id FROM `fo_rating_list` WHERE video_id = '{$file['id']}' && type = 'minus'")
        ->fetchAll();
        $total_minus = count($total_minus);
        
        if (isset($_GET['rating']) && in_array($_GET['rating'], array('plus', 'minus'))) {
            if (empty($check)) {
                $updRating = ($_GET['rating'] == 'plus' ? ($file['rating'] + 1) : ($file['rating'] - 1));
                $typeRating = ($_GET['rating'] == 'plus' ? 'plus' : 'minus');
                Flight::db()
                ->query("UPDATE `fo_video` SET `rating` = '{$updRating}' WHERE `id` = {$file['id']}");
                
                Flight::db()->query("
                    INSERT INTO `fo_rating_list`
                    (video_id, type, date, ip)
                    VALUES
                    ('{$file['id']}', '{$typeRating}', UNIX_TIMESTAMP(), '{$_SERVER['REMOTE_ADDR']}')
                    ");
                    
                $message = 'Вы успешно проголосовали ' . ($typeRating == 'plus' ? '+1' : '-1');
            } else {
                $message = 'Вы уже голосовали за это видео';
            }
        } else {
            $message = null;
        } 
            
        /* Добавление комментария */
        if (!empty($_POST['send']) && !empty($file['file_comments'])) {
            $array = array();
            $ip = $_SERVER['REMOTE_ADDR'];
            $agent = $_SERVER['HTTP_USER_AGENT'];
            $name = trim(htmlspecialchars($_POST['name']));
            $text = trim(htmlspecialchars($_POST['text']));
            
            if (empty($name) OR empty($text)) {
                $err[] = '<b><span style="color: red;">Заполните все поля</span></b>';
            }
            
            if (!empty($text) && strlen($text) > 1000) {
                $err[] = '<b><span style="color: red;">Длина комментария превышает 1000 символов</span></b>';
            }
            
            if ($_POST['captcha'] != $_SESSION['rand_code']) {
                $err[] = '<b><span style="color: red;">Проверочное число введено не верно</span></b>';
            }
            
            if (empty($err)) {

                $sql = "INSERT INTO fo_comments 
                (com_name, com_text, parent, ip, uagent, date) 
                VALUES 
                (:name, :text, :file_id, '{$ip}', :uagent, UNIX_TIMESTAMP())";   
                             
                $result = Flight::db()->prepare($sql);
                $result->bindValue(":name", $name, PDO::PARAM_STR);
                $result->bindValue(":text", $text, PDO::PARAM_STR);
                $result->bindValue(":file_id", $file['id'], PDO::PARAM_INT);
                $result->bindValue(":uagent", $agent, PDO::PARAM_STR);
                
                $result->execute(); 
                
                $message = '<b><span style="color: green;">Комментарий успешно добавлен</span></b>';
                
                $string = '';
                
                for ($i = 0; $i < 5; $i++) {
                	// this numbers refer to numbers of the ascii table (lower case)
                	$string .= chr(rand(97, 122));
                }
                
                $_SESSION['rand_code'] = $string;
                
                $_SESSION['captcha_time'] = time() + 600;
                
                //header("Location: /porno-obmenik-video/" . $file['alias']);
            }
        }
        
        /* Удаление комментария */
        if (!empty($_GET['com_del']) && !empty($_COOKIE['admin_verify']) && $_COOKIE['admin_verify'] == md5(PASSWORD)) {
            $sql = "DELETE FROM fo_comments WHERE id = :com_id";
            $result = Flight::db()->prepare($sql);
            $result->bindValue(":com_id", $_GET['com_del'], PDO::PARAM_INT);
            $result->execute(); 
            $message = 'Комментарий успешно удален';
        }

        $p = Flight::page();
        
        $pages = $p->menu('fo_comments', '/porno-obmenik-video/' . $file['alias'], $page, "WHERE `parent` = {$file['id']}", FO_PERPAGE_COM);
        
        $comments = Flight::db()
        ->query("SELECT * FROM `fo_comments` WHERE parent = '{$file['id']}' ORDER BY id DESC " . $p->limit())
        ->fetchAll();        

        $post['name'] = (!empty($_POST['name']) && !empty($err) ? trim(htmlspecialchars($_POST['name'])) : NULL);
        $post['text'] = (!empty($_POST['text']) && !empty($err) ? trim(htmlspecialchars($_POST['text'])) : NULL);
        
        
        parent::view('fo/video', [
        'title'       => $file['file_name'],
        'description' => '',
        'keywords'    => '',
        'video' => $file,
        'comments' => $comments,
        'message'     => $message,
        'check_rating' => (empty($check) ? 0 : 1),
        'rating_plus' => $total_plus,
        'rating_minus' => $total_minus,
        'pagination' => $pages,
        'post' => $post,
        'err' => (!empty($err) ? $err : array()),
        'admin' => (!empty($_COOKIE['admin_verify']) && $_COOKIE['admin_verify'] == md5(PASSWORD) ? true : false)
        ]); 
                
    }
    
    public static function download($url) {

        $result = Flight::db()->prepare("SELECT * FROM `fo_video` WHERE alias = :alias");
        $result->bindValue(":alias", $url, PDO::PARAM_STR);
        $result->execute(); 
        $file = $result->fetch(PDO::FETCH_ASSOC);  
        
        if (empty($file)) {
            header("Location: /");
            exit;
        }
        
        Flight::db()
        ->query("UPDATE `fo_video` SET `last_load` = UNIX_TIMESTAMP(), `load_count` = `load_count` + 1 WHERE `id` = {$file['id']}");
        Flight::redirect('/public/video_fo/'.PREFIX . $file['alias'].'.' . $file['ext']);        
    }
    
    public static function online_fo($url) {
        $result = Flight::db()->prepare("SELECT * FROM `fo_video` WHERE alias = :alias");
        $result->bindValue(":alias", $url, PDO::PARAM_STR);
        $result->execute(); 
        $file = $result->fetch(PDO::FETCH_ASSOC); 
        
        if (empty($file) OR $file['ext'] != 'mp4') {
            header("Location: /");
            exit;
        }  
        
        parent::view('fo/online', [
        'title'       => $file['file_name'],
        'description' => 'Смотреть онлайн видео бесплатно',
        'keywords'    => 'смотреть, секс, бесплатно, онлайн, видео, порно',
        'video'       => $file,
        'prefix'      => PREFIX
        ]);              
    }
    

}