function securefile($_params)
{
    global $REX;
    $myself = 'xmediapool_password';
    $m = OOMedia::getMediaByFilename($_params['filename']);
    $password = $m->getValue('med_' . $myself . '_password');
    // htaccess-Datei auslesen
    $htaccess_path = rtrim($REX['MEDIAFOLDER'], '/\\') . '/.htaccess';
    $htaccess = '';
    if (file_exists($htaccess_path)) {
        $htaccess = file_get_contents($htaccess_path);
    }
    // RewriteBase ermitteln
    $base = trim(str_replace('\\', '/', substr(realpath($REX['MEDIAFOLDER']), strlen(realpath($_SERVER['DOCUMENT_ROOT'])))), '/');
    $frontend = str_replace('//', '/', '/' . trim(str_replace('\\', '/', substr(realpath($REX['FRONTEND_PATH']), strlen(realpath($_SERVER['DOCUMENT_ROOT'])))), '/') . '/');
    $lines = array();
    $lines[] = "RewriteEngine On\nRewriteBase /" . $base;
    // vorhandene Passwort geschützte Dateien auslesen
    $already_secured = false;
    if (preg_match_all('~^RewriteRule \\^(.*)\\$\\s.*$~im', $htaccess, $matches, PREG_SET_ORDER)) {
        foreach ($matches as $match) {
            // Wenn bei einer Datei ein Passwort gelöscht wurde, dann diese Datei nicht mehr schützen
            if ($match[1] == preg_quote($_params['filename'], '~')) {
                if (!strlen($password)) {
                    continue;
                } else {
                    $already_secured = true;
                }
            }
            $lines[] = sprintf('RewriteRule ^%s$ http://%%{HTTP_HOST}%s%s [R=302,L]', $match[1], $frontend, ltrim(rex_geturl($REX['ADDON']['DOWNLOAD_FORM_ARTICLE_ID'][$myself], '', array($myself . '_filename' => stripslashes($match[1])), '&'), '/'));
        }
    }
    // neue passwortgeschützte Datei hinzufügen
    if (!$already_secured and strlen($password)) {
        $lines[] = sprintf('RewriteRule ^%s$ http://%%{HTTP_HOST}/%s%s [R=302,L]', preg_quote($_params['filename'], '~'), $frontend, ltrim(rex_geturl($REX['ADDON']['DOWNLOAD_FORM_ARTICLE_ID'][$myself], '', array($myself . '_filename' => $_params['filename']), '&'), '/'));
    }
    // Daten in die htaccess-Datei schreiben
    file_put_contents($htaccess_path, implode("\n", $lines));
}
Exemple #2
0
<?php

// module: magnific_popup_image_out
$imageType = 'magnific_popup_image_thumb';
$imageFile = 'REX_MEDIA[1]';
if ($imageFile != '') {
    $media = OOMedia::getMediaByFilename($imageFile);
    // get title and description
    if (OOMedia::isValid($media)) {
        $title = $media->getValue('title');
        $description = $media->getValue('med_description');
    } else {
        $title = '';
        $description = '';
    }
    // get media dir
    if (isset($REX['MEDIA_DIR'])) {
        $mediaDir = $REX['MEDIA_DIR'];
    } else {
        $mediaDir = 'files';
    }
    // generate image manager url
    if (method_exists('seo42', 'getImageManagerFile')) {
        $imageManagerUrl = seo42::getImageManagerFile($imageFile, $imageType);
        $imageUrl = seo42::getMediaDir() . $imageFile;
    } elseif (method_exists('seo42', 'getImageManagerUrl')) {
        // compat
        $imageManagerUrl = seo42::getImageManagerUrl($imageFile, $imageType);
        $imageUrl = seo42::getMediaDir() . $imageFile;
    } else {
        $imageUrl = $REX['HTDOCS_PATH'] . $mediaDir . '/' . $imageFile;