[mod] very simple prefix

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

[mod] very simple prefix

Beitrag von Seimon »

Dieser MOD setzt mit einem Klick in der Forenansicht [vieforum.php] ein Prefix vor einen Threadtitel

Konfiguration im Quelltext

Änderungen:
1 neue Datei (prefix.php)
2 Dateien zu ändern (viewforum.php, templates/*/viewforum_body.tpl) [3 Änderungen]

prefix.php:
[Based on: Vorlage für in phpBB eingebundene Seiten http://www.phpbb.de/doku/kb/artikel.php ... hpbb_seite und dem Standardhandling von POST & GET von phpBB]

Code: Alles auswählen

<?php

//
// very simple prefix by luna + seimon
//

//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( !( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD ))
{
	message_die(GENERAL_ERROR, $lang['Not_Authorised']);
}

//get parameters
$topic_id = '';
if ( isset($HTTP_POST_VARS['topic_id']) || isset($HTTP_GET_VARS['topic_id']) )
{
	$topic_id = ( isset($HTTP_POST_VARS['topic_id']) ) ? intval(htmlspecialchars($HTTP_POST_VARS['topic_id'])) : intval(htmlspecialchars($HTTP_GET_VARS['topic_id']));
}

$redirect_id = '';
if ( isset($HTTP_POST_VARS['redirect_id']) || isset($HTTP_GET_VARS['redirect_id']) )
{
	$redirect_id = ( isset($HTTP_POST_VARS['redirect_id']) ) ? intval(htmlspecialchars($HTTP_POST_VARS['redirect_id'])) : intval(htmlspecialchars($HTTP_GET_VARS['redirect_id']));
}

$text = '';
if ( isset($HTTP_POST_VARS['text']) || isset($HTTP_GET_VARS['text']) )
{
	$text = ( isset($HTTP_POST_VARS['text']) ) ? htmlspecialchars($HTTP_POST_VARS['text']) : htmlspecialchars($HTTP_GET_VARS['text']);
}

//check if we have all we need
if ((!$topic_id) || (!$redirect_id) || (!$text))
{
    message_die(GENERAL_ERROR, 'Not enough parameters', '', __LINE__, __FILE__);
}

//get topic title
$sql = "SELECT topic_title FROM " . $table_prefix . "topics WHERE topic_id = $topic_id;";

$result;
if ( !($result = $db->sql_query($sql)) )
{
  message_die(GENERAL_ERROR, 'Cannot find topic title', '', __LINE__, __FILE__, $sql);
}

$title_old = '';
if ( $db->sql_numrows($result) > 0)
{
  $row = mysql_fetch_array($result);
  $title_old = $row['topic_title'];
}

//set new title
$title_new = $title_old;
if ($title_old)
{
  //add  done only if it not exists
  if (!(preg_match("/\[$text\]/", $title_old)))
  {
    $title_new = "[$text] ".$title_old;
  }

} else
{
  message_die(GENERAL_ERROR, 'Cannot get topic title', '', __LINE__, __FILE__, $sql);
}

//update title for this thread in database
$sql = "UPDATE " . $table_prefix . "topics SET topic_title = '$title_new' WHERE topic_id = $topic_id;";
$result = mysql_query($sql);

//redirect to desired forum
$redirect_url = 'viewforum.php?f='.$redirect_id;
header("Location: $redirect_url");
exit;
?>

MOD:

Code: Alles auswählen

# 
#-----[ COPY ]------------------------------------------------ 
# 

copy prefix.php to prefix.php

# 
#-----[ OPEN ]------------------------------------------------ 
# 

viewforum.php


# 
#-----[ FIND ]------------------------------------------------ 
# 

$template->assign_block_vars('topicrow', array(

# 
#-----[ BEFORE, ADD ]----------------------------------------- 
# Hier kann konfiguriert werden
# Für die Unterschiedlichen "Prefix Pakete" gibt es jeweils ein if
# In der Bedingung stehen die Userberechtigungen und in welchem Forum es die Buttons gibt
# Die Variable $luna_done bestimmt das Prefix und das Aussehen der Buttons


// very simple prefix by luna + seimon start 
		$luna_done = '';
		if ( ( $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD ) AND $forum_id == 37 )
		{
			$luna_done = ' <a href="prefix.php?topic_id=' . $topic_id  . '&redirect_id='. $forum_id . '&text=done"> <img src="images/hakerl.gif" alt="Beitrag als done markieren" title="Beitrag als done markieren" border="0" /></a>';
		}
		if ( ( $userdata['user_level'] == ADMIN || $userdata['user_id'] == 4525 || $userdata['user_id'] == 6143 ) AND $forum_id == 27 )
		{
			$luna_done = ' <a href="prefix.php?topic_id=' . $topic_id  . '&redirect_id='. $forum_id . '&text=verwarnt"> <img src="images/icon_ycard.gif" alt="User wurde verwarnt" title="User wurde verwarnt" border="0" /></a>';
			$luna_done .= ' <a href="prefix.php?topic_id=' . $topic_id  . '&redirect_id='. $forum_id . '&text=deleted"> <img src="images/icon_rcard.gif" alt="User wurde gelöscht" title="User wurde gelöscht" border="0" /></a>';
			$luna_done .= ' <a href="prefix.php?topic_id=' . $topic_id  . '&redirect_id='. $forum_id . '&text=done"> <img src="images/hakerl.gif" alt="Beitrag als done markieren" title="Beitrag als done markieren" border="0" /></a>';
		}
// very simple prefix by luna + seimon end

# 
#-----[ FIND ]------------------------------------------------ 
# 

			'TOPIC_TITLE' => $topic_title,


# 
#-----[ AFTER, ADD ]------------------------------------------
#

// very simple prefix by luna + seimon start 
			'LUNA_DONE' => $luna_done,
// very simple prefix by luna + seimon end




# 
#-----[ OPEN ]------------------------------------------------ 
#

templates/*/viewforum_body.tpl


# 
#-----[ FIND ]------------------------------------------------ 
# 

<a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a></span>

# 
#-----[ AFTER, ADD ]------------------------------------------
#

{topicrow.LUNA_DONE}

mfg Seimon



/edit: achja wär nett, wenn mir wer sagen könnte, ob es da sicherheitslücken gibt, die ich übersehen hab ;)
Benutzeravatar
FooFan
Mitglied
Beiträge: 410
Registriert: 29.10.2005 15:13
Wohnort: Dresden
Kontaktdaten:

Beitrag von FooFan »

Hi,

gibt es da nich schon was??
http://www.phpbb.de/moddb/Prefix_Titel
gruss Stephan
Mein Forum
blubbin
Mitglied
Beiträge: 409
Registriert: 08.09.2005 16:52

Beitrag von blubbin »

Hi

nettes Teil. Einfach aber genial.
Kannst du auch mal deine anderen Very Simple Mods zeigen?

Gruß,
blubbin
Benutzeravatar
Slytherin
Mitglied
Beiträge: 1771
Registriert: 11.03.2005 17:52
Wohnort: Hogwarts
Kontaktdaten:

Beitrag von Slytherin »

FooFan hat geschrieben:Hi,

gibt es da nich schon was??
http://www.phpbb.de/moddb/Prefix_Titel
Wie du sehen kannst, ist dieser Hack hier viel weniger komplett als der Prefix to Title Hack und ist einfach, aber genial :wink:
Grosses Kompliment, interessanter Hack :)

Slytherin
Benutzeravatar
FooFan
Mitglied
Beiträge: 410
Registriert: 29.10.2005 15:13
Wohnort: Dresden
Kontaktdaten:

Beitrag von FooFan »

Slytherin hat geschrieben:
FooFan hat geschrieben:Hi,

gibt es da nich schon was??
http://www.phpbb.de/moddb/Prefix_Titel
Wie du sehen kannst, ist dieser Hack hier viel weniger komplett als der Prefix to Title Hack und ist einfach, aber genial :wink:
Grosses Kompliment, interessanter Hack :)

Slytherin
Sorry wusste ich nicht! :roll:
;)
gruss Stephan
Mein Forum
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

blubbin hat geschrieben:nettes Teil. Einfach aber genial.
Kannst du auch mal deine anderen Very Simple Mods zeigen?
Slytherin hat geschrieben:Wie du sehen kannst, ist dieser Hack hier viel weniger komplett als der Prefix to Title Hack und ist einfach, aber genial :wink:
Grosses Kompliment, interessanter Hack :)
Danke für die Blumen :)

Bis jetzt hab ich:

very simple prefix
very simple global topic
very simple report post
very simple yellowcard
Search only subject MOD Überarbeitung
Summe ALLER Topic-Views
very simple gender
very simple birthday

Wobei die letzen 2 für die Allgemeinheit eher uninteressant sein werden, da bei mir Alter und Geschlecht von einer anderen DB kommen und somit die Usereingabe komplett entfällt.

Den very simple report post MOD werd ich mal posten wenn Interesse besteht und ich Zeit find ;)
Benutzeravatar
Ta Lun
Mitglied
Beiträge: 60
Registriert: 28.08.2001 02:00
Kontaktdaten:

Beitrag von Ta Lun »

ansich ist das ok nur verstehe ich nicht warum du in der prefix.php das die POSt Variablen prüfst, da du dies ja über einen GET übergibst.
Auch kann jeder MOD für jedes Forum ein solches Posting erstellen.

Die einzige Lücke, die ich gefunden habe -wenn es denn eine sein sollte- ist das ich den Prefix Text jederzeit über die url ändern kann.

Ansonsten recht einfach aber effektiv.
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag von Seimon »

Ta Lun hat geschrieben:ansich ist das ok nur verstehe ich nicht warum du in der prefix.php das die POSt Variablen prüfst, da du dies ja über einen GET übergibst.
Das ist so, weil ich POST und GET immer verwechsle und ich deswegen die Stelle einfach aus einer phpbb Datei rauskopiert hab :oops:
:D
Ta Lun hat geschrieben:Auch kann jeder MOD für jedes Forum ein solches Posting erstellen.

Die einzige Lücke, die ich gefunden habe -wenn es denn eine sein sollte- ist das ich den Prefix Text jederzeit über die url ändern kann.
Du hast Recht! Wenn ein Moderator nur in einem Forum Moderator ist kann er mit dem MOD trotzdem in allen Foren den Titel ändern...

Ich hab das aber nicht weiter behandelt, da ich finde, dass man seinen Moderatoren soweit vertrauen können muss!


Ein weiterer Punkt ist noch, dass ein Titel, der die komplette Zeichenanzahl ausnützt, abgeschnitten wird...
Benutzeravatar
Ta Lun
Mitglied
Beiträge: 60
Registriert: 28.08.2001 02:00
Kontaktdaten:

Beitrag von Ta Lun »

hm...es wird der Titel angepasst, was bedeutet, wenn man einen blöden Prefix wählt dieser evtl. in vielen Postings auftaucht, ob wohl das eigentliche Thema ein anderes ist, was beim Suchen zuviele Infos ausschmeißt.

Das jetzt noch als letzter Hinweis.
Ansonsten scheint das ding für "quick & Dirty" gut zu sein.

Und POST und get kann man leicht auseinander halten.

Wenn Du ein Posting Postes, dann füllst Du ein Formular aus= $_POST
Wenn es in der URL ist, muß der Server sich das selber nehmen =$_GET

So in etwa habe ich mir das abgespeichert ;)
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“