Profil von »Marc«

(ehemals »Siora«)

  • Marc

    Entwickler

    Sie müssen sich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

Blog

Sanktionen pip

Dienstag, 6. April 2010, 01:20

Hallo Community,

in dem Blog eintrag zeige ich euch wie ihr euch eine Eigene Sanktion erstellen könnt, als Beispiel benutze ich mein Gästebuch Plugin.

Die Sanktionen PIP wird benutzt wenn man eigene Sanktionen erstellen möchte wie in meinem Beispiel wird man aus dem Gästebuch gebannt.

Ihr müsst einmal die suspensiontype.xml erstellen in meinem beispiel sieht so so aus.
Bei <name> wird der Name der Sanktion angegeben
bei <classfile> wird der pfad zur SuspensionType.class.php angegeben standart ist es "lib/data/user/infraction/suspension/type/"

XML

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://www.woltlab.com/DTDs/ruleconditiontype.dtd">
<data>	
	<import>
		<type>
			<name>banGuestbook</name>
			<classfile>lib/data/user/infraction/suspension/type/BannGuestbookSuspensionType.class.php</classfile>
		</type>
	</import>
</data>


so nun haben wir die xml datei fertig jetzt erstellen wird die BannGuestbookSuspensionType.class.php , in der datei wird gesagt
was passiren soll wenn die Sanktion eintrifft. In meinem Beispiel wird der User aus dem Gästebuch gebannt.
Damit das aber auch geht habe ich vorher ein SQL befehl benutzt und mir eine weitere Spalte in der tabelle wcf1_user angelegt.

MySQL-Abfrage(n)

1
ALTER TABLE `wcf1_user` ADD `showGuestbook` TINYINT( 1 ) NOT NULL DEFAULT '1';


Hier nun die BannGuestbookSuspensionType.class.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
// wcf imports
require_once(WCF_DIR.'lib/data/user/infraction/suspension/type/AbstractSuspensionType.class.php');

/**
 * Allows a temporary or permanent ban guestbook of a user. 
 * 
 * @author Jean-Marc Licht
 * @copyright (c) 2009 by Jean-Marc Licht
 * @license Creative Commons <by-nd> http://creativecommons.org/licenses/by-nd/3.0/deed.de
 * @package de.masa-revenge.guestbook
 * @subpackage    data.user.infraction.suspension.type
 * @category     Community Framework (commercial)
 */
class BannGuestbookSuspensionType extends AbstractSuspensionType {
    /**
     * @see SuspensionType::apply()
     */
    public function apply(User $userUserSuspension $userSuspensionSuspension $suspension) {
        $sql "UPDATE    wcf".WCF_N."_user
            SET    showGuestbook = 0
            WHERE    userID = ".$user->userID;
        WCF::getDB()->sendQuery($sql);
    }
    
    /**
     * @see SuspensionType::revoke()
     */
    public function revoke(User $userUserSuspension $userSuspensionSuspension $suspension) {
        $sql "UPDATE    wcf".WCF_N."_user
            SET    showGuestbook = 1
            WHERE    userID = ".$user->userID;
        WCF::getDB()->sendQuery($sql);
    }
}
?>


So nun haben wir die Sanktion erstellt, das ganze sollte ja nun auch geprüft werden das könnte so aussehen in der DemoPage.class.php.

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
/**
     * @see Page::readParameters()
     */
    public function readParameters() {
        parent::readParameters();
        
        // Permission Denied for user are Bann from Guestbook
        if(WCF::getUser()->showGuestbook == && WCF::getUser()->userID 0){
            throw new PermissionDeniedException();
        }
    }

Tags: pip, Sanktionen

Kategorien: pip's


Kommentare (1)

Kategorien

Verwendete Tags

Letzte Einträge

Letzte Kommentare