Seite 1 von 1

[mod] very simple prefix

Verfasst: 03.06.2006 01:16
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 ;)

Verfasst: 03.06.2006 09:03
von FooFan
Hi,

gibt es da nich schon was??
http://www.phpbb.de/moddb/Prefix_Titel

Verfasst: 03.06.2006 10:16
von blubbin
Hi

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

Gruß,
blubbin

Verfasst: 03.06.2006 11:55
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

Verfasst: 03.06.2006 13:53
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:
;)

Verfasst: 03.06.2006 16:16
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 ;)

Verfasst: 08.06.2006 12:05
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.

Verfasst: 08.06.2006 18:05
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...

Verfasst: 08.06.2006 19:07
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 ;)