$size = strtolower(get_input('size')); if (!in_array($size, array('master', 'large', 'medium', 'small', 'tiny', 'topbar'))) { $size = 'medium'; } // If user doesn't exist, return default icon if (!$user) { $path = elgg_view("icon/user/default/{$size}"); header("Location: {$path}"); exit; } // Try and get the icon $filehandler = new ElggFile(); $filehandler->owner_guid = $user->getGUID(); $filehandler->setFilename("profile/" . $user->getGUID() . $size . ".jpg"); $success = false; if ($filehandler->open("read")) { if ($contents = $filehandler->read($filehandler->size())) { $success = true; } } if (!$success) { $path = elgg_view('icon/user/default/' . $size); header("Location: {$path}"); exit; } header("Content-type: image/jpeg"); header('Expires: ' . date('r', time() + 864000)); header("Pragma: public"); header("Cache-Control: public"); header("Content-Length: " . strlen($contents)); echo $contents;
/** * Serve a converted web compatible video * URL structure: projekktor/<guid>/<format>/ * * @param array $page Page segments array */ function elgg_file_viewer_projekktor_video($page) { $enable_ffmpeg = elgg_get_plugin_setting('enable_ffmpeg', 'elgg_file_viewer'); if ($enable_ffmpeg != 'yes') { return false; } $guid = elgg_extract(0, $page, null); $file = get_entity($guid); if (!elgg_instanceof($file, 'object', 'file')) { return false; } $info = pathinfo($file->getFilenameOnFilestore()); $filename = $info['filename']; $format = elgg_extract(1, $page); $output = new ElggFile(); $output->owner_guid = $file->owner_guid; $output->setFilename("projekktor/{$file->guid}/{$filename}.{$format}"); if (!$output->size()) { try { $filestorename = $output->getFilenameOnFilestore(); $output->open('write'); $output->close(); $ffmpeg_path = elgg_get_plugin_setting('ffmpeg_path', 'elgg_file_viewer'); $FFmpeg = new FFmpeg($ffmpeg_path); $FFmpeg->input($file->getFilenameOnFilestore())->output($filestorename)->ready(); elgg_log("Converting file {$file->guid} to {$format}: {$FFmpeg->command}", 'NOTICE'); } catch (Exception $e) { elgg_log($e->getMessage(), 'ERROR'); } } $mime = elgg_file_viewer_get_mime_type($file); $base_type = substr($mime, 0, strpos($mime, '/')); header("Pragma: public"); header("Content-type: {$base_type}/{$format}"); header("Content-Disposition: attachment; filename=\"{$filename}.{$format}\""); ob_clean(); flush(); readfile($output->getFilenameOnFilestore()); }