Extension:PDF Include/de

MediaWiki-Erweiterungen
OOjs UI icon advanced.svg
PDF Include
Freigabestatus: stabil
Einbindung Tag
Beschreibung Bindet eine PDF-Datei ein
Autor(en) Chrisi200014, MarkAHershberger
Letzte Version 1.2
MediaWiki 1.22
Lizenz Keine Lizenz angegeben
Herunterladen im Artikel
width, height
pdf
Prüfe die Benutzungs- und Versionsmatrix.

PDF Include ist eine Erweiterung für Media Wiki 1.16 und höher, mit welcher PDF-Dateien von jeder beliebigen Adresse eingebunden werden können.

InstallationEdit

Kopieren Sie den Code von unten und speicheren Sie ihn im Erweiterungsordner Ihres MediaWikis unter dem Dateinamen pdf_include.php. Anschließend fügen folgendende Zeile zur LocalSettings.php hinzu:

require_once("$IP/extensions/pdf_include.php");

BenutzungEdit

<pdf width="width" height="height">Path</pdf>
<pdf width="800px" height="1000px">http://www.example.com/example.pdf</pdf>

VariablenEdit

GrößeEdit

Wenn height und width nicht angegeben sind, wird die Standardgröße auf 800x800px gesetzt. Sie können dies durch setzen der Einstellungen in der LocalSettings.php ändern:

$wgPDF['width'] = 400;
$wgPDF['height'] = 400;

Domains blockierenEdit

Eine Domain kann durch das Hinzufügen zum Array $wgPDF['black'] blockiert werden:

$wgPDF['black'][] = ‘example.com';
$wgPDF['black'][] = ‘example.net';

RechteEdit

Um den PDF-Tag benutzen zu können, müssen die Benutzer in einer Gruppe mit den pdf-Rechten sein.

$wgGroupPermissions['*']['pdf'] = true;     // Erlaubt allen Benutzer die Verwendung des PDF-Tags.
$wgGroupPermissions['user']['pdf'] = true;  // Erlaubt allen angemeldeten Benutzern die Verwendung des PDF-Tags.
$wgGroupPermissions['sysop']['pdf'] = true; // Standard - Nur Benutzer in der sysop-Gruppe.

ChangelogEdit

0.5
Benutzerrechte-System wurde hinzugefügt
1.0
Domainblockierung hinzugefügt
1.1
Rewrite
1.2
  • Für aktuelles MediaWiki geupdated
  • Bessere Darstellung von Fehlern
  • Behebt den Fall, wo anonyme Benutzer bearbeiten können

CodeEdit

<?php
if (!defined ('MEDIAWIKI')) {
	echo 'This is a MediaWiki-Extension and not meant to be run standalone!';
	exit (1);
}
$wgGroupPermissions['sysop']['pdf'] = true; //To allow the Sysop group to use the pdf-tags
if( !isset($wgPDF['width']) ) {
	$wgPDF['width'] = 800;
}
if( !isset($wgPDF['height']) ) {
	$wgPDF['height'] = 800;
}
if( !isset($wgPDF['black']) ) {
	$wgPDF['black'] = array();
}

$wgExtensionCredits['parserhook'] [] = array (
	'name'             => 'PDF Include',
	'author'           => 'Chrisi200014, [http://hexmode.com Mark A. Hershberger]',
	'url'              => 'http://www.mediawiki.org/wiki/Extension:PDF_Include',
	'description'      => 'Includes PDF-Files',
	'version'          => '1.2',
	'path'             => __FILE__,
);

if(defined('MW_SUPPORTS_PARSERFIRSTCALLINIT')) {
	$wgHooks['ParserFirstCallInit'][] = 'pdfRegister';
} else {
	$wgExtensionFunctions[] = 'pdfRegister';
}

function pdfRegister() {
	global $wgParser;
	$wgParser->setHook( 'pdf', 'pdfInclude' );
	return true;
}

function pdfObject( $data, $width, $height ){
	return '<object width="'.$width.'" height="'.$height.'" data="'.htmlentities($data).'" type="application/pdf"></object>';
}

function pdfError( $msg ) {
	return "<span class='error'>PDF tag error: $msg</span>";
}

function pdfInclude( $obj, $argv, $parser ){
	global $wgPDF;
	$parser->disableCache();
	$width = ( isset( $argv['width'] ) ) ? $argv['width'] : $wgPDF['width'];
	$height = ( isset( $argv['height'] ) ) ? $argv['height'] : $wgPDF['height'];
	$user = User::newFromName ($parser->getRevisionUser());

	if( $user === false ) {
		$allowed = array_flip( User::getGroupPermissions( array( "*" ) ) );
		if( !isset( $allowed['pdf'] ) ) {
			return pdfError( "Rechte benötigt" );
		}
	} else {
		$user->load();
		if(!$user->isAllowed( 'pdf' )) {
			return pdfError( "Rechte benötigt" );
		}
	}
	if( !$obj ) {
		return pdfError( "Kein Pfad gegeben" );
	}

	if( !preg_match( '~^\d+~', $width ) ) {
		return pdfError( "Weite ist falsch" );
	} elseif ( !preg_match( '~^\d+~',$height ) ) {
		return pdfError( "Höhe ist falsch" );
	}

	if( preg_match( '~^[^\/]+\.pdf$~', $obj ) ){
		$image = Image::newFromName( $obj );
		if( $image !== NULL ) {
			return pdfObject( $image->getURL(), $width, $height );
		}
	}

	$domain = parse_url( $obj );
	if( $domain === false || ( !isset( $domain['host'] ) ) ) {
		return pdfError( "Falsche URL" );
	}
	foreach( $wgPDF['black'] as $x => $y ) {
		$wgPDF['black'][$x] = strtolower( $y );
	}

	if( in_array( strtolower( $domain['host'] ), $wgPDF['black'] ) ){
		return pdfError( "Domain ist blockiert" );
	}

	if( filter_var( $obj, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ) ) {
		return pdfObject( $obj, $width, $height );
	} else {
		return pdfError( "Pfad ist falsch" );
	}
}