function format_data($data, $id = null) { /*{{{*/ list($url, $text) = split_data($data); if ($url) { // Mobile Device PDF: Das können wir als JPG ausliefern! if ($id && preg_match('/\\.(?:pdf|ps)$/i', $url) && is_mobile()) { $url = 'image.php?data_id=' . htmlspecialchars($id); } $url = remove_authentication_from_urls($url); return '<a class="exercise" href="' . htmlspecialchars($url) . '">' . htmlspecialchars($text ? $text : basename($url)) . '</a>'; } else { return htmlspecialchars($text); } }
?> </id> <title><?php echo htmlspecialchars($descs[$exercise['feed_id']]); ?> - <?php echo strip_tags(format_data($exercise['data'], $exercise['id'])); ?> </title> <summary type="html"> <?php echo htmlspecialchars(format_data($exercise['data'], $exercise['id'])); ?> </summary> <?php list($url, $text) = split_data($exercise['data']); if ($url) { ?> <link title="<?php echo htmlspecialchars(trim($text)); ?> " href="<?php echo htmlspecialchars($url); ?> " rel="alternate" /> <?php } else { ?> <content type="text"><?php echo htmlspecialchars($text); ?>
$contents = load_url($_POST['url']); } catch (Exception $e) { $error .= $e->getMessage(); } $contents = html_entity_decode($contents, ENT_COMPAT, "utf-8"); preg_match_all($_POST['search'], $contents, $matches, PREG_SET_ORDER); restore_error_handler(); if (preg_last_error() != PREG_NO_ERROR) { $error = "Regulärer Ausdruck ungültig."; } else { $output = ''; foreach ($matches as $match) { $sheet = preg_replace_callback('/\\$([0-9]+)/', function ($vmatch) use($match) { return $match[$vmatch[1]]; }, $_POST['exercise']); list($sheet_url, $sheet_text) = split_data($sheet); $sheet_out = format_data($sheet); if ($sheet_url) { // Prüfen, ob die URL existiert try { check_if_url_changed($sheet_url, false); } catch (Exception $ignore) { $sheet_out .= ' (Die Datei wurde nicht gefunden)'; } } $output .= '<li>' . $sheet_out . '</li>'; } } } else { $error .= 'Ungültiger Regulärer Ausdruck.'; }
function split_data($json, $db, &$json_updated, &$need_update, &$excludes) { if (isset($json)) { foreach ($json as $k => $v) { if (is_array($v)) { $db[$k] = isset($db[$k]) ? $db[$k] : null; if (in_array($k, $excludes)) { if (isset($db[$k])) { $json_updated[$k] = $db[$k]; } continue; } split_data($v, $db[$k], $json_updated[$k], $need_update, $excludes); } else { if (isset($db[$k])) { $json_updated[$k] = $db[$k]; } else { $json_updated[$k] = $v; if (!empty($v)) { $need_update = true; } } } } } }
<?php require "system.php"; set_time_limit(30); // Cachen von gespeicherten Übungen if (isset($_GET['data_id'])) { $data = $database->query('SELECT data FROM data WHERE id = ' . intval($_GET['data_id']))->fetchColumn(); list($url, $text) = split_data($data); if (!$url) { header("HTTP/1.1 404 Not found"); die('<DOCTYPE HTML><h1>Not found</h1>'); } try { $_GET['cache_id'] = cache_file($url, false, true, 3600 * 24); } catch (Exception $e) { // Geht anscheinend nicht - dann leiten wir halt weiter auf das Original header('Location: ' . $url); die; } } // Daten direkt aus dem Cache laden $cache_id = $_GET['cache_id']; $cache_file = $cache_dir . basename($cache_id); $query = $database->prepare('SELECT * FROM cache WHERE id = ?'); $query->execute(array($cache_id)); $cache_object = $query->fetch(PDO::FETCH_OBJ); if (!$cache_object || !file_exists($cache_file)) { header("HTTP/1.1 404 Not found"); die('<DOCTYPE HTML><h1>Not found</h1>'); } header('Content-disposition: attachment; filename="' . addcslashes($cache_object->filename, '"') . '"');
require 'system.php'; // Aufrufe in zu kurzen Abständen unterbinden (irgendein Bug in machen Browsern) if (isset($_SESSION['latest_combine_call']) && $_SESSION['latest_combine_call'] + 5 > time()) { gotop("index.php"); } $_SESSION['latest_combine_call'] = time(); $data_ids = array_map(intval, $_POST['d']); $combine = $database->query('SELECT data FROM data WHERE id IN (' . implode(', ', $data_ids) . ')'); if (is_dir('pdftk')) { $execute = 'LD_LIBRARY_PATH=pdftk pdftk/pdftk '; } else { $execute = 'pdftk '; } $final_cache_id = ''; foreach ($combine as $data) { list($url, $title) = split_data($data['data']); if (!$url) { continue; } if (preg_match('/cache_id=([^&]+)/', $url, $match)) { $cache_id = basename($match[1]); } else { try { $cache_id = cache_file($url, false, true, 3600 * 24); } catch (Exception $e) { status_message("Dieser Dienst funktioniert nur mit PDF-Dateien"); gotop("index.php"); } } if (substr(get_mime_type($cache_dir . $cache_id), 0, 15) != 'application/pdf') { status_message("Dieser Dienst funktioniert nur mit PDF-Dateien");
<?php require "system.php"; if (system("which convert 2>&1 > /dev/null") != 0) { status_message("Dieser Dienst steht nur zur Verfügung, wenn ImageMagick auf dem Serversystem installiert ist"); gotop("index.php"); } set_time_limit(0); if (!isset($_GET['data_id'])) { header('HTTP/1.1 404 Not found'); die("<DOCTYPE HTML><h1>File not found</h1>"); } $data = $database->query('SELECT data FROM data WHERE id = ' . intval($_GET['data_id']))->fetchColumn(); list($image, $text) = split_data($data); if (!preg_match('#^https?://#i', $image)) { header('HTTP/1.1 404 Not found'); die("<DOCTYPE HTML><h1>File not found</h1>"); } if (preg_match('#\\.([^\\.]+)$#', $image, $extension)) { $extension = $extension[1]; } else { $extension = 'pdf'; } $hash = sha1('img-' . $image); $cache_file = $cache_dir . $hash; $cache_exists = file_exists($cache_file); try { $data = load_url($image, false, $cache_exists ? filemtime($cache_file) : false); } catch (Exception $e) { // Geht anscheinend nicht - dann leiten wir halt weiter auf das Original. header('Location: ' . $image);