Seite 1 von 1

Themen passwortgeschtzt auch für Mods?

Verfasst: 09.12.2004 17:39
von daruler
Hallo,

ich habe gerade den "Password-protected topics"-Mod eingebaut, womit man Threads passwortschützen kann. Das klappt bis jetzt wunderbar...aber leider bin ich als Admin der Einzige, der passwortgeschütze Threads aufmachen kann.
Ich würde jedoch gerne auch, dass mein Super-Moderator das auch kann.
Vielleicht so veränder, dass "if( $userdata['user_level'] != ADMIN oder ID von meinem Super-Mod, dann [...]"


Ich denke man müsste diesen Part etwas abändern und seine ID irgendwie einsetzen. Wahrscheinlich der entsprechende Part aus der Installation des Mods:
#
#-----[ OPEN ]--------------------------------------------
#
modcp.php

#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT poster_id, COUNT(post_id) AS posts
FROM " . POSTS_TABLE . "
WHERE topic_id IN ($topic_id_sql)
GROUP BY poster_id";

#
#-----[ REPLACE WITH ]-------------------------------------
#
//
// Check for password-protected topics
//
if( $userdata['user_level'] != ADMIN )
{
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE topic_id IN ($topic_id_sql) AND topic_password = ''";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not obtain topic list', '', __LINE__, __FILE__, $sql);
}

$topic_id_sql = '';
while( $row = $db->sql_fetchrow($result) )
{
$topic_id_sql .= ( ( $topic_id_sql != '' ) ? ', ' : '' ) . $row['topic_id'];
}
}

if( $topic_id_sql == '' )
{
message_die(GENERAL_MESSAGE, $lang['Not_delete_password_topics']);
}
else
{
$sql = "SELECT poster_id, COUNT(post_id) AS posts
FROM " . POSTS_TABLE . "
WHERE topic_id IN ($topic_id_sql)
GROUP BY poster_id";
}

Kann mir jemand helfen und es vielleicht auch für meinen Sper-Mod ermöglichen? Ich hoffe, es macht nicht zu viel Umstand :roll:

Verfasst: 09.12.2004 18:07
von shwepsi
ADMIN || SUPERMOD oder so ähnlich

Alt Gr + < ist der |
|| heisst eines von beiden muss zutreffen

ob es wirklich SuperMod ist kannst du in der constants.php nachschauen, da sind die Level aufgeführt, groß und kleinschreibung beachten !!!

Verfasst: 09.12.2004 18:18
von daruler
Nein, leider habe ich nicht den Super-Moderator-Mod eingebaut, sondern den Junior-Admin. "SUPERMOD" gibt es deshalb nicht in constants.
Müsste wirklich über die ID gehen.

Danke

Verfasst: 09.12.2004 18:34
von shwepsi
auch die kannst du in der constants.php ablesen, zumindest normalerweise, ansonsten gib direkt die ID ein

ADMIN || 4 als beispiel

Verfasst: 09.12.2004 18:34
von Mario Siebert
Das ist relativ einfach, beim Junior Admin musst du die user_id des Benutzers der momentan Online ist erst darauf prüfen ob derjenige Junior Admin ist und die if Abfrage dann entsprechend Modifizieren.

Grüße Mario

Verfasst: 09.12.2004 18:52
von shwepsi
Mario Siebert hat geschrieben:Das ist relativ einfach, beim Junior Admin musst du die user_id des Benutzers der momentan Online ist erst darauf prüfen ob derjenige Junior Admin ist und die if Abfrage dann entsprechend Modifizieren.

Grüße Mario
ich glaube das will da jemand genauer, viel genauer ....

Verfasst: 09.12.2004 19:17
von Mario Siebert
shwepsi hat geschrieben: ich glaube das will da jemand genauer, viel genauer ....
Hab ich mir schon gedacht, ich poste ihm gleich ne Anleitung, ich hatte nur gerade keine Zeit ;)

Grüße Mario

Verfasst: 09.12.2004 19:22
von shwepsi
Mario Siebert hat geschrieben:
shwepsi hat geschrieben: ich glaube das will da jemand genauer, viel genauer ....
Hab ich mir schon gedacht, ich poste ihm gleich ne Anleitung, ich hatte nur gerade keine Zeit ;)

Grüße Mario
wenn ich die Constante für die junior Admins wüsste, oder die Tabelle wo es drinsteht?
habe den Mod jedoch noch nie angeschaut
wollte mal, habe aber dann eine eigene Lösung programmiert

Verfasst: 09.12.2004 19:26
von Mario Siebert
So hier die Anleitung:

modcp.php:

[suchen]

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
[danach einfügen]

Code: Alles auswählen

include_once($phpbb_root_path . 'includes/functions_jr_admin.' . $phpEx);
$jr_admin_userdata = jr_admin_get_user_info($userdata['user_id']);
[suchen]

Code: Alles auswählen

// 
// Check for password-protected topics 
// 
if( $userdata['user_level'] != ADMIN ) 
{ 
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE topic_id IN ($topic_id_sql) AND topic_password = ''"; 
if( !$result = $db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, 'Could not obtain topic list', '', __LINE__, __FILE__, $sql); 
} 

$topic_id_sql = ''; 
while( $row = $db->sql_fetchrow($result) ) 
{ 
$topic_id_sql .= ( ( $topic_id_sql != '' ) ? ', ' : '' ) . $row['topic_id']; 
} 
} 

if( $topic_id_sql == '' ) 
{ 
message_die(GENERAL_MESSAGE, $lang['Not_delete_password_topics']); 
} 
else 
{ 
$sql = "SELECT poster_id, COUNT(post_id) AS posts 
FROM " . POSTS_TABLE . " 
WHERE topic_id IN ($topic_id_sql) 
GROUP BY poster_id"; 
}
[ersetzen durch]

Code: Alles auswählen

//
// Check for password-protected topics
//
if( $userdata['user_level'] != ADMIN || !empty($jr_admin_userdata['user_jr_admin']) )
{
$sql = "SELECT topic_id FROM " . TOPICS_TABLE . " WHERE topic_id IN ($topic_id_sql) AND topic_password = ''";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not obtain topic list', '', __LINE__, __FILE__, $sql);
}

$topic_id_sql = '';
while( $row = $db->sql_fetchrow($result) )
{
$topic_id_sql .= ( ( $topic_id_sql != '' ) ? ', ' : '' ) . $row['topic_id'];
}
}

if( $topic_id_sql == '' )
{
message_die(GENERAL_MESSAGE, $lang['Not_delete_password_topics']);
}
else
{
$sql = "SELECT poster_id, COUNT(post_id) AS posts
FROM " . POSTS_TABLE . "
WHERE topic_id IN ($topic_id_sql)
GROUP BY poster_id";
}
Konnte es momentan nicht testen, sollte aber laufen.

Grüße Mario