Path(); $videoFormats = array(); $ffmpegFormats = preg_split('/\s+/', ZM_FFMPEG_FORMATS); foreach ( $ffmpegFormats as $ffmpegFormat ) { if ( preg_match('/^([^*]+)(\*\*?)$/', $ffmpegFormat, $matches) ) { $videoFormats[$matches[1]] = $matches[1]; if ( !isset($videoFormat) && $matches[2] == '*' ) { $videoFormat = $matches[1]; } } else { $videoFormats[$ffmpegFormat] = $ffmpegFormat; } } $videoFiles = array(); if ( $dir = opendir($eventPath) ) { while ( ($file = readdir($dir)) !== false ) { $file = $eventPath.'/'.$file; if ( is_file($file) ) { if ( preg_match('/\.(?:'.join('|', $videoFormats).')$/', $file) ) { $videoFiles[] = $file; } } } closedir($dir); } if ( isset($_REQUEST['deleteIndex']) ) { $deleteIndex = validInt($_REQUEST['deleteIndex']); unlink($videoFiles[$deleteIndex]); unset($videoFiles[$deleteIndex]); } if ( isset($_REQUEST['downloadIndex']) ) { // can't be output buffering, as this file might be large ob_end_clean(); $downloadIndex = validInt($_REQUEST['downloadIndex']); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private', false); // required by certain browsers header('Content-Description: File Transfer'); header('Content-disposition: attachment; filename="'.basename($videoFiles[$downloadIndex]).'"'); // basename is required because the video index contains the path and firefox doesn't strip the path but simply replaces the slashes with an underscore. header('Content-Transfer-Encoding: binary'); header('Content-Type: application/force-download'); header('Content-Length: '.filesize($videoFiles[$downloadIndex])); readfile($videoFiles[$downloadIndex]); exit; } $focusWindow = true; xhtmlHeaders(__FILE__, translate('Video')); ?>