Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=3)
-- Fragen zum WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=4)
--- User für eine bestimmte Zeit für eine bestimmte Gruppe freischalten ? (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=997)
Geschrieben von haumi am 02.11.2010 um 20:05:
Ich denke das ich die Lösung habe - zwar schon eine ganze Weile aber es war so viel dazwischen gekommen, das ich es noch nicht ausgearbeitet habe.
Heutige Tests waren jedenfalls erfolgreich!
Liebe Bayouma,
in welchem Forum soll es bei dir eingebaut werden?.
Ich schalge vor das ich es dort mal einbaue und wir beide
einen Funktionstest durchführen, der denn nicht auf Tage sondern wenige Min
erst mal angesetzt wird.
Wenn es das ist, was du dir vorstellst, dann fasse ich das Ganze zusammen und stelle es hier ein.
Also melde dich mal wegen einem Termin bei mir.
LG
haumi
Geschrieben von Poldi am 05.11.2010 um 15:39:
haumio ich hätte denn hack auch gerne in mein foru danke schonmal dafür
Geschrieben von haumi am 07.11.2010 um 07:55:
So ich setze es hier mal rein und wie gesagt
das script wurde einmal in meinem Testboard eingebaut und hat funktioniert.
Führe im acp unter SQL Abfragen -->SQL-Abfrage(n) eingeben: folgende SQL-Abfragen durch:
(Kann man auf einmal machen!)
ALTER TABLE bb1_users ADD COLUMN `grup` INT NOT NULL DEFAULT '0' ;
CREATE TABLE bb1_user_az SELECT * FROM bb1_users;
CREATE TABLE bb1_user2_az SELECT * FROM bb1_user2groups;
TRUNCATE TABLE bb1_user_az;
TRUNCATE TABLE bb1_user2_az ;
erstelle eine Sprachvariable:
Kategorie: acp_users
Variable: LANG_ACP_USERS_OTHER_GROUPTIME
Text: Wie viel Tage soll der User der Gruppe angehören? "0" ist für immer!
Öffne users_edit.htm und suche:
| code: |
1:
2:
3:
|
<tr class="tblsection">
<td colspan="2">{$lang->items['LANG_REGISTER_OTHER_INFORMATION']}</td>
</tr> |
|
füge darüber ein:
| code: |
1:
2:
3:
4:
|
<tr class="firstrow">
<td><b>{$lang->items['LANG_ACP_USERS_OTHER_GROUPTIME']}</b></td>
<td><input type="text" name="grup" maxlength="30" value="0" /></td>
</tr> |
|
Speichern
Im acp acp-Templates cachen (acp_tpl.php ausführen)
öffne acp/users.php
suche:
| code: |
1:
2:
|
if (isSet($_POST['title'])) $title = $_POST['title'];
else $title = ''; |
|
füge darüber ein:
| code: |
1:
2:
|
if (isSet($_POST['grup'])) $grup = intval($_POST['grup']);
else $grup = 0; |
|
suche:
| code: |
1:
|
$db->query("INSERT INTO bb".$n."_users (username,password,sha1_password,email,groupcombinationid,rankid, |
|
füge dahinter ein
suche:
| code: |
1:
|
"('".addslashes($username)."','".md5($password)."','".sha1($password)."','".addslashes($email)."','".$groupcombinationid."','".$rankid['rankid']."', |
|
füge dahinter ein:
suche:
füge darüber ein:
suche:
| code: |
1:
2:
3:
4:
|
if (isset($_REQUEST['title']) && $_REQUEST['title']) {
add2where("title LIKE '%".addslashes($_REQUEST['title'])."%'");
linkGenerator("title", $_REQUEST['title']);
} |
|
füge darüber ein:
| code: |
1:
2:
3:
4:
|
if (isset($_REQUEST['grup']) && $_REQUEST['grup'] == 0) {
add2where("activation <> '1'");
linkGenerator("grup", $_REQUEST['grup']);
} |
|
suche:
| code: |
1:
2:
|
if (isSet($_POST['title'])) $title = $_POST['title'];
else $title = ''; |
|
füge darüber ein:
| code: |
1:
2:
|
if (isSet($_POST['grup'])) $grup = $_POST['grup'];
else $grup = ''; |
|
suche weiter:
| code: |
1:
2:
|
if (isSet($_POST['notificationperpm'])) $notificationperpm = intval($_POST['notificationperpm']);
else $notificationperpm = 0; |
|
füge dadrunter ein:
| code: |
1:
2:
3:
4:
5:
6:
|
if ($grup > 0) {
$gruptime = time();
$db->unbuffered_query("INSERT INTO bb1_user_az SELECT * FROM bb1_users WHERE userid='$userid'");
$db->unbuffered_query("INSERT INTO bb1_user2_az SELECT * FROM bb1_user2groups WHERE userid='$userid'");
} |
|
suche:
| code: |
1:
|
$db->unbuffered_query("UPDATE bb".$n."_users SET username='".addslashes($username)."',email='".addslashes($email)."',groupcombinationid='".$groupcombinationid."',rankid='".$rankid['rankid']."' |
|
füge dahinter ein:
| code: |
1:
|
,grup='".$grup."',gruptime='".$gruptime."' |
|
suche:
| code: |
1:
|
$title = $user['title']; |
|
füge darüber ein:
| code: |
1:
|
$grup = $user['grup']; |
|
speichern
öffne wbb2/index.php und suche:
| code: |
1:
2:
3:
4:
5:
|
index_pms = '';
$quicklogin = '';
$index_showevents = '';
$index_useronline = '';
$index_stats = ''; |
|
und füge dadrunter ein:
| code: |
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:
37:
|
// Gruppenzugehörigkeit zurücksetzen
$result = $db->unbuffered_query("SELECT userid, username, grup, gruptime FROM bb".$n."_users WHERE grup > 0");
while ($row = $db->fetch_array($result)) {
$row['username'] = htmlconverter($row['username']);
$userid = intval($row['userid']);
$grup = $row['grup'];
$gruptime = $row['gruptime'];
$time = time();
if (($time - $gruptime) > $grup*86400) {
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_user_az WHERE userid='$userid'");
while ($row = $db->fetch_array($result)) {
$groupcombinationid = $row['groupcombinationid'];
$rankid = $row['rankid'];
$rankgroupid = $row['rankgroupid'];
$acpmode = $row['acpmode'];
$db->unbuffered_query("UPDATE bb".$n."_users SET groupcombinationid = '$groupcombinationid' , rankid = '$rankid', rankgroupid = '$rankgroupid', acpmode = '$acpmode', grup ='0' , gruptime = '0' WHERE userid='$userid'");
$db->unbuffered_query("DELETE FROM bb1_user_az WHERE userid='$userid'");
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_user2_az WHERE userid='$userid'");
while ($row = $db->fetch_array($result)) {
$userid = $row['userid'];
$groupid = $row['groupid'];
$db->unbuffered_query("UPDATE bb".$n."_user2groups SET groupid = '$groupid' WHERE userid='$userid'");
$db->unbuffered_query("DELETE FROM bb1_user2_az WHERE userid='$userid'");
}
}
}
}
// Ende Gruppenzugehörigkeit zurücksetzen |
|
speichern und das soll es denn gewesen sein.
Auch hier gilt, die Dateien und Templates vorher sichern!
Wenn etwas unklar sein sollte bitte hier fragen bevor man etwas falsch macht.
Es wird auch Hilfe gegeben wenn etwas nicht so ganz geklappt hat.
Obacht geben auf die Kommas, die sind leicht zu übersehen!!!!!!!!!!
Urheber ist haumi - aber jeder kann es frei verwenden und nach belieben abändern.
IM ANHANG IST DIE GEZIPTE DATEI!!
Geschrieben von Bayouma am 10.11.2010 um 12:34:
Sorry, haumi,- ich hatte so viel zu tun, daß ich das hier gar nicht gesehen hatte.
Bitte nicht böse sein !
Also eigentlich sollte diese Sache bei mir in das "clever pauken" eingebaut werden.
Soll ich das testweise mal selbst einbauen ?
Winki
Geschrieben von Tinchen am 10.11.2010 um 14:19:
Soderle ich habs probiert...kam ne Fehlermeldung, hab dann die Originale wieder eingespielt...
Bräuchte da nen bissl Hilfe Haumi....
Geschrieben von haumi am 10.11.2010 um 15:56:
Hi Bayouma,
versuche es mal selbst.
Kann ja sein das da noch ein Fehler drin ist.
Dann weiß ich bei Tinchen denn wenigstens Bescheid.
LG
haumi
Geschrieben von james am 10.11.2010 um 16:09:
| Zitat: |
Original von haumi
So ich setze es hier mal rein und wie gesagt
das script wurde einmal in meinem Testboard eingebaut und hat funktioniert.
Führe im acp unter SQL Abfragen -->SQL-Abfrage(n) eingeben: folgende SQL-Abfragen durch:
(Kann man auf einmal machen!)
ALTER TABLE bb1_users ADD COLUMN `grup` INT NOT NULL DEFAULT '0' ;
ALTER TABLE `bb1_users` ADD COLUMN `gruptime` INT(11) unsigned NOT NULL ;
CREATE TABLE bb1_user_az SELECT * FROM bb1_users;
CREATE TABLE bb1_user2_az SELECT * FROM bb1_user2groups;
TRUNCATE TABLE bb1_user_az;
TRUNCATE TABLE bb1_user2_az ;
erstelle eine Sprachvariable:
Kategorie: acp_users
Variable: LANG_ACP_USERS_GROUPTIME
Text: Wie viel Tage soll der User der Gruppe angehören? "0" ist für immer!
Öffne users_edit.htm und suche:
| code: |
1:
2:
3:
|
<tr class="tblsection">
<td colspan="2">{$lang->items['LANG_REGISTER_OTHER_INFORMATION']}</td>
</tr> |
|
füge darüber ein:
| code: |
1:
2:
3:
4:
|
<tr class="firstrow">
<td><b>{$lang->items['LANG_ACP_USERS_OTHER_GROUPTIME']}</b></td>
<td><input type="text" name="grup" maxlength="30" value="0" /></td>
</tr> |
|
Speichern
Im acp acp-Templates cachen (acp_tpl.php ausführen)
öffne acp/users.php
suche:
| code: |
1:
2:
|
if (isSet($_POST['title'])) $title = $_POST['title'];
else $title = ''; |
|
füge darüber ein:
| code: |
1:
2:
|
if (isSet($_POST['grup'])) $grup = intval($_POST['grup']);
else $grup = 0; |
|
suche:
| code: |
1:
|
$db->query("INSERT INTO bb".$n."_users (username,password,sha1_password,email,groupcombinationid,rankid, |
|
füge dahinter ein
suche:
| code: |
1:
|
"('".addslashes($username)."','".md5($password)."','".sha1($password)."','".addslashes($email)."','".$groupcombinationid."','".$rankid['rankid']."', |
|
füge dahinter ein:
suche:
füge darüber ein:
suche:
| code: |
1:
2:
3:
4:
|
if (isset($_REQUEST['title']) && $_REQUEST['title']) {
add2where("title LIKE '%".addslashes($_REQUEST['title'])."%'");
linkGenerator("title", $_REQUEST['title']);
} |
|
füge darüber ein:
| code: |
1:
2:
3:
4:
|
if (isset($_REQUEST['grup']) && $_REQUEST['grup'] == 0) {
add2where("activation <> '1'");
linkGenerator("grup", $_REQUEST['grup']);
} |
|
suche:
| code: |
1:
2:
|
if (isSet($_POST['title'])) $title = $_POST['title'];
else $title = ''; |
|
füge darüber ein:
| code: |
1:
2:
|
if (isSet($_POST['grup'])) $grup = $_POST['grup'];
else $grup = ''; |
|
suche weiter:
| code: |
1:
2:
|
if (isSet($_POST['notificationperpm'])) $notificationperpm = intval($_POST['notificationperpm']);
else $notificationperpm = 0; |
|
füge dadrunter ein:
| code: |
1:
2:
3:
4:
5:
6:
|
if ($grup > 0) {
$gruptime = time();
$db->unbuffered_query("INSERT INTO bb1_user_az SELECT * FROM bb1_users WHERE userid='$userid'");
$db->unbuffered_query("INSERT INTO bb1_user2_az SELECT * FROM bb1_user2groups WHERE userid='$userid'");
} |
|
suche:
| code: |
1:
|
$db->unbuffered_query("UPDATE bb".$n."_users SET username='".addslashes($username)."',email='".addslashes($email)."',groupcombinationid='".$groupcombinationid."',rankid='".$rankid['rankid']."' |
|
füge dahinter ein:
| code: |
1:
|
,grup='".$grup."',gruptime='".$gruptime."' |
|
suche:
| code: |
1:
|
$title = $user['title']; |
|
füge darüber ein:
| code: |
1:
|
$grup = $user['grup']; |
|
speichern
öffne wbb2/index.php und suche:
| code: |
1:
2:
3:
4:
5:
|
index_pms = '';
$quicklogin = '';
$index_showevents = '';
$index_useronline = '';
$index_stats = ''; |
|
und füge dadrunter ein:
| code: |
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:
37:
|
// Gruppenzugehörigkeit zurücksetzen
$result = $db->unbuffered_query("SELECT userid, username, grup, gruptime FROM bb".$n."_users WHERE grup > 0");
while ($row = $db->fetch_array($result)) {
$row['username'] = htmlconverter($row['username']);
$userid = intval($row['userid']);
$grup = $row['grup'];
$gruptime = $row['gruptime'];
$time = time();
if (($time - $gruptime) > $grup*86400) {
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_user_az WHERE userid='$userid'");
while ($row = $db->fetch_array($result)) {
$groupcombinationid = $row['groupcombinationid'];
$rankid = $row['rankid'];
$rankgroupid = $row['rankgroupid'];
$acpmode = $row['acpmode'];
$db->unbuffered_query("UPDATE bb".$n."_users SET groupcombinationid = '$groupcombinationid' , rankid = '$rankid', rankgroupid = '$rankgroupid', acpmode = '$acpmode', grup ='0' , gruptime = '0' WHERE userid='$userid'");
$db->unbuffered_query("DELETE FROM bb1_user_az WHERE userid='$userid'");
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_user2_az WHERE userid='$userid'");
while ($row = $db->fetch_array($result)) {
$userid = $row['userid'];
$groupid = $row['groupid'];
$db->unbuffered_query("UPDATE bb".$n."_user2groups SET groupid = '$groupid' WHERE userid='$userid'");
$db->unbuffered_query("DELETE FROM bb1_user2_az WHERE userid='$userid'");
}
}
}
}
// Ende Gruppenzugehörigkeit zurücksetzen |
|
speichern und das soll es denn gewesen sein.
Auch hier gilt, die Dateien und Templates vorher sichern!
Wenn etwas unklar sein sollte bitte hier fragen bevor man etwas falsch macht.
Es wird auch Hilfe gegeben wenn etwas nicht so ganz geklappt hat.
Obacht geben auf die Kommas, die sind leicht zu übersehen!!!!!!!!!!
Urheber ist haumi - aber jeder kann es frei verwenden und nach belieben abändern. |
|
Gutes Teil.
Werde das Testen.
Haumi ist es dir möglich den Beitrag auch als *.zip Datei einzustellen?
james
Geschrieben von haumi am 10.11.2010 um 18:47:
Das sollte möglich sein.
Ich warte aber erst mal ab was bayouma sagt.
Vielleicht ist ja da doch noch ein Fehler drin.
EDIT:
Ich habs bei Tinchen eingebaut und es waren noch zwei kleine Fehler drin.
Wir haben es gemeinsam getestet und es verlief wie gewünscht.
Die Fehler habe ich in beiden Scripten verbessert.
Ich habe nachträglich noch eine Erweitereung der bb1_users machen müssen:
ALTER TABLE `bb1_users` ADD COLUMN `gruptime` INT(11) unsigned NOT NULL ;
und bei
if ($grup > 0) {
$gruptime = time();
$db->unbuffered_query("INSERT INTO bb1_user_az SELECT * FROM bb1_users WHERE userid='$userid'");
$db->unbuffered_query("INSERT INTO bb1_user2_az SELECT * FROM bb1_user2groups WHERE userid='$userid'");
}
hatte hier im Script die abschließende Klammer gefehlt.
LG
haumi
Geschrieben von Bayouma am 12.11.2010 um 15:13:
So, kam jetzt auch endlich dazu, es einzubauen.
Außer einem kleinen Fehler, ist aber alles OK. Dabei handelt es sich aber ganz sicher um einen Einbaufehler.
Winki
Geschrieben von haumi am 12.11.2010 um 16:15:
Es war kein Einbaufehler sondern bei der Sprachvariablen war ein Schreibfehler drin.
Ist aber gut so, die Zipdatei ist geändert und nun, da es in 2 Boards funktioniert sollte alles korrekt sein.
Die Zip-Datei ist im Beitrag wo das Script drin steht.
LG
haumi
Geschrieben von Pink Fish am 09.03.2012 um 12:40:

bekomme auf einmal SQL-Fehler, hatte bis heute keine Probleme damit !
SQL-DATABASE ERROR
Database error in WoltLab Burning Board (2.3.6): Invalid SQL: INSERT INTO bb1_user_az SELECT * FROM bb1_users WHERE userid='5'
mysql error: Column count doesn't match value count at row 1

alles nochmal geprüft aber nichts gefunden
Gruß Pinky
Geschrieben von haumi am 09.03.2012 um 13:56:
Die Tabelle bb1_user_az hat mehr oder weniger Tabellenfelder als die Tabelle bb1_users.
Diese müssen angepasst werden.
Passieren kann das durch einen Hackeinbau, der zwar die bb1_users ändert aber die bb1_user_az nicht.
logischerweise bb1_user_az müsste weniger haben als bb1_users.
Schau mal nach.
LG
haumi
Geschrieben von Pink Fish am 09.03.2012 um 14:15:

so ist es auch !
bb1_users = 256 Felder
bb1_user_az = 251 Felder

wie bekomme ich die jetzt da rüber, Tabelle kopieren ?
Gruß Pinky
Geschrieben von haumi am 09.03.2012 um 14:40:
Wenn du es kannst so lege einfach die Tabellenfelder, die in der bb1_user_az fehlen per phpmyadmin oder dumper an.
Ansonsten müsste ich das machen und bräuchte ein paar Zugangsdaten.
LG
haumi
Geschrieben von Pink Fish am 09.03.2012 um 14:48:

habe es gerade angelegt !
geht alles wieder
Gruß Pinky
Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH