コード例 #1
0
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);
    }
}
コード例 #2
0
ファイル: atom.php プロジェクト: phillipberndt/Uebungszettel
    ?>
</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);
        ?>
コード例 #3
0
         $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.';
 }
コード例 #4
0
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;
                    }
                }
            }
        }
    }
}
コード例 #5
0
ファイル: cache.php プロジェクト: phillipberndt/Uebungszettel
<?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, '"') . '"');
コード例 #6
0
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");
コード例 #7
0
ファイル: image.php プロジェクト: phillipberndt/Uebungszettel
<?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);