|
- <?php
- // Glue code for handling a Tinyboard post.
- // Portions of this file are derived from Tinyboard code.
-
- function postHandler($post) {
- global $board, $config;
-
- if ($post->has_file) foreach ($post->files as &$file) if ($file->extension == 'webm') {
- if ($config['webm']['use_ffmpeg']) {
- require_once dirname(__FILE__) . '/ffmpeg.php';
- $webminfo = get_webm_info($file->file_path);
-
- if (empty($webminfo['error'])) {
- $file->width = $webminfo['width'];
- $file->height = $webminfo['height'];
-
- if ($config['spoiler_images'] && isset($_POST['spoiler'])) {
- $file = webm_set_spoiler($file);
- }
- else {
- $file = set_thumbnail_dimensions($post, $file);
- $tn_path = $board['dir'] . $config['dir']['thumb'] . $file->file_id . '.jpg';
-
- if(false == make_webm_thumbnail($file->file_path, $tn_path, $file->thumbwidth, $file->thumbheight)) {
- $file->thumb = $file->file_id . '.jpg';
- }
- else {
- $file->thumb = 'file';
- }
- }
- }
- else {
- return $webminfo['error']['msg'];
- }
- }
- else {
- require_once dirname(__FILE__) . '/videodata.php';
- $videoDetails = videoData($file->file_path);
- if (!isset($videoDetails['container']) || $videoDetails['container'] != 'webm') return "not a WebM file";
-
- // Set thumbnail
- $thumbName = $board['dir'] . $config['dir']['thumb'] . $file->file_id . '.webm';
- if ($config['spoiler_images'] && isset($_POST['spoiler'])) {
- // Use spoiler thumbnail
- $file = webm_set_spoiler($file);
- } elseif (isset($videoDetails['frame']) && $thumbFile = fopen($thumbName, 'wb')) {
- // Use single frame from video as pseudo-thumbnail
- fwrite($thumbFile, $videoDetails['frame']);
- fclose($thumbFile);
- $file->thumb = $file->file_id . '.webm';
- } else {
- // Fall back to file thumbnail
- $file->thumb = 'file';
- }
- unset($videoDetails['frame']);
-
- // Set width and height
- if (isset($videoDetails['width']) && isset($videoDetails['height'])) {
- $file->width = $videoDetails['width'];
- $file->height = $videoDetails['height'];
-
- if ($file->thumb != 'file' && $file->thumb != 'spoiler') {
- $file = set_thumbnail_dimensions($post, $file);
- }
- }
- }
- }
- }
-
- function set_thumbnail_dimensions($post,$file) {
- global $board, $config;
-
- $tn_dimensions = array();
- $tn_maxw = $post->op ? $config['thumb_op_width'] : $config['thumb_width'];
- $tn_maxh = $post->op ? $config['thumb_op_height'] : $config['thumb_height'];
-
- if ($file->width > $tn_maxw || $file->height > $tn_maxh) {
- $file->thumbwidth = min($tn_maxw, intval(round($file->width * $tn_maxh / $file->height)));
- $file->thumbheight = min($tn_maxh, intval(round($file->height * $tn_maxw / $file->width)));
- } else {
- $file->thumbwidth = $file->width;
- $file->thumbheight = $file->height;
- }
-
- return $file;
- }
-
- function webm_set_spoiler($file) {
- global $board, $config;
-
- $file->thumb = 'spoiler';
- $size = @getimagesize($config['spoiler_image']);
- $file->thumbwidth = $size[0];
- $file->thumbheight = $size[1];
-
- return $file;
- }
|