Wer ist hier? 1 Gäste
Shouboxeintrag nur für bestimmte Gruppen
|
|
emblinux |
Geschrieben am 10.02.2010 00000002 16:17
|
![]() Seiten Administrator ![]() Beiträge: 3813 Registriert am: 04.10.08 Fusioneer: 16 years 7 months 0 weeks 2 days 8 hours 38 minutes 57 seconds |
Mir ist da gestern so eine Idee durch den Kopf gegangen. Ich möchte gerne eine Shout-Nachricht schreiben, die soll aber nicht jeder sehen, sondern nur bestimmte Leute. Und vielleicht möchte ein Mitglied nicht unbedingt, dass seine Nachrichten öffentlich sind, sondern nur von Mitgliedern gelesen werden kann. Also habe ich mir da einen kleinen Mod/Hack zusammengebastelt, den ich euch nicht vorenthalten möchte. Vielleicht findet es ja der eine oder andere ja für seine Seite sinnvoll. Als 1. muss ein Tabellenfeld der Tabelle fusion_shoutbox hinzugefügt werden. Das macht ihr am besten mit phpMyAdmin. Ihr nennt das Feld shout_read_access mit dem Datentyp SMALLINT und einer Länge von 3 und dem Attribute UNSIGNED. Wer kein phpMyAdmin zu Hand hat, kann das auch über ein Panel machen. Dazu einfach im Adminbereich zum Panel-Management gehen und auf Panel hinzufügen klicken. Dort gebt ihr einen Panel Namen ein und beim Panel Content kommt folgendes rein. Code Download Code dbquery("ALTER TABLE ".DB_SHOUTBOX." ADD shout_read_access SMALLINT( 3 ) UNSIGNED NOT NULL"); Dann noch das Admin-Passwort eingeben und auf Vorschau (NICHT SPEICHERN !!!) klicken. Wenn keine Fehlermeldung kommt, sollte das Feld angelegt worden sein. jetzt müssen die Dateien shoutbox_panel.php und shoutbox_archive.php angepasst werden. Zuerst die shoutbox_panel.php, diese öffnen und die Zeile Code Download Code if (!defined("IN_FUSION")) { die("Access Denied"); } suchen und dahinter folgendes einfügen: Code Download Code $shout_access_control = true; Das dient lediglich dazu, um das ganze variabel zu gestalten. Dann suchen wir die Zeile: Code Download Code $shout_message = trim(stripinput(censorwords($shout_message))); und fügen danach folgendes ein: Code Download Code $shout_read_access = ( (isset($_POST['shout_read_access']) && isNum($_POST['shout_read_access']) ) ? $_POST['shout_read_access'] : 0 ); Dann suchen wir die Stelle Code Download Code $result = dbquery("UPDATE ".DB_SHOUTBOX." SET shout_message='".$shout_message."' WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'")); und ändern diese in Code Download Code $result = dbquery("UPDATE ".DB_SHOUTBOX." SET shout_message='".$shout_message."', shout_read_access='".$shout_read_access."' WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'")); Die nächste Zeile lautet Code Download Code $result = dbquery("INSERT INTO ".DB_SHOUTBOX." (shout_name, shout_message, shout_datestamp, shout_ip, shout_read_access) VALUES ('$shout_name', '$shout_message', '".time()."', '".USER_IP."')"); und muss wie folgt abgeändert werden: Code Download Code $result = dbquery("INSERT INTO ".DB_SHOUTBOX." (shout_name, shout_message, shout_datestamp, shout_ip, shout_read_access) VALUES ('$shout_name', '$shout_message', '".time()."', '".USER_IP."','".$shout_read_access."')"); Der nächste Abschnitt ist etwas größer. Sucht nach: Code Download Code if (iMEMBER && (isset($_GET['s_action']) && $_GET['s_action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))){ und ändert ihn um in: Code Download Code
Jetzt sind wir mit dieser datei auch schon fast fertig. Sucht nach Code Download Code echo "<br /><input type='submit' name='post_shout' value='".$locale['global_153']."' class='button' />\n"; Und fügt davor folgendes ein: Code Download Code if ( iMEMBER && $shout_access_control ) Damit jetzt im Panel die Nachrichten auch für die richtigen Gruppen angezeigt werden, muss man natürlich auch die Select-Anweisung anpassen. Also sucht nach: Code Download Code $result = dbquery( und ändert diese um in: Code Download Code $result = dbquery( Damit sind wir mit dieser Datei fertig und widmen uns der Archiv-Datei shoutbox_archive.php. Sucht dort nach: Code Download Code require_once THEMES."templates/header.php"; und fügt danach folgendes ein: Code Download Code $shout_access_control = true; Jetzt sucht ihr nach: Code Download Code $archive_shout_message = trim(stripinput(censorwords($archive_shout_message))); und fügt danach folgendes ein: Code Download Code $archive_shout_read_access = ( (isset($_POST['archive_shout_read_access']) && isNum($_POST['archive_shout_read_access']) ) ? $_POST['archive_shout_read_access'] : 0 ); Dann sucht nach: Code Download Code $result = dbquery("UPDATE ".DB_SHOUTBOX." SET shout_message='".$archive_shout_message."' WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'")); und ändert es um in: Code Download Code $result = dbquery("UPDATE ".DB_SHOUTBOX." SET shout_message='".$archive_shout_message."', shout_read_access='".$archive_shout_read_access."' WHERE shout_id='".$_GET['shout_id']."'".(iADMIN ? "" : " AND shout_name='".$userdata['user_id']."'")); Sucht dann weiter nach: Code Download Code $result = dbquery("INSERT INTO ".DB_SHOUTBOX." (shout_name, shout_message, shout_datestamp, shout_ip) VALUES ('$archive_shout_name', '$archive_shout_message', '".time()."', '".USER_IP."')"); und ändert es um in: Code Download Code $result = dbquery("INSERT INTO ".DB_SHOUTBOX." (shout_name, shout_message, shout_datestamp, shout_ip,shout_read_access) VALUES ('$archive_shout_name', '$archive_shout_message', '".time()."', '".USER_IP."','".$archive_shout_read_access."')"); Jetzt kommt wieder ein etwas größerer Teil. Sucht nach: Code Download Code if (iMEMBER && (isset($_GET['action']) && $_GET['action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) { und ersetzt es durch: Code Download Code if (iMEMBER && (isset($_GET['action']) && $_GET['action'] == "edit") && (isset($_GET['shout_id']) && isnum($_GET['shout_id']))) { Dann sucht ihr nach: Code Download Code echo "<br /><input type='submit' name='post_archive_shout' value='".$locale['global_153']."' class='button' />\n"; und fügt davor folgendes ein: Code Download Code if ( iMEMBER && $shout_access_control ) zuguterletzt muss auch hier noch die Select-Anweisung angepasst werden. Sucht dazu nach: Code Download Code $result = dbquery( und ersetzt es durch: Code Download Code $result = dbquery( Damit sollte alles erledigt sein. Bitte macht vor den Anpassungen ein Backup der Dateien. Ich übernehme auch keine Haftung für evtl. auftauchende Schäden. Man kann das ganze noch weiter Anpassen, in dem man noch die Sprachdatei für die Shoubox anpasst, damit Ausgaben wie "Lesbar für" nicht in der Paneldatei selber auftauchen. Und man könnte auch den Schalter shout_access_control per Einstellungen im Adminbereich machen. Das kann aber jeder für sich machen. Für Lob und konstruktiver Kritik bin ich selbstverständlich empfänglich. Sollte ich also keinen Fehler bei der Dokumentation hier gemacht haben, sollte alles auf Anhieb funktionieren. PS: Ich werde noch meine angepassten Dateien hier später anhängen. Diese beziehen sich aber immer auf die Standard Shoutbox. Wer es gerne mal testen möchte, der kann sich auf meiner Testseite einloggen und das mal ausprobieren. http://emblinux.ath.cx/fusion7/news.php User: tester PW: 123456 erreichbar nur solange der Rechner an ist. Habe mal die Dateien von mir dran gehangen. Wie gesagt, es handelt sich dabei um angepasste Dateien der original Shoutbox. Habe auch gleich noch einen kleinen Fehler behoben in der Anleitung und demzufolge auch in der Datei (shoutbox_archive.php) |
|
|
SC-Ad-Bot | Advertisement |
| |
bobbel |
Geschrieben am 19.02.2012 00000002 20:29
|
![]() Neuling ![]() Beiträge: 3 Registriert am: 15.11.11 Fusioneer: 13 years 5 months 3 weeks 21 days 17 hours 14 minutes 4 seconds |
uff coole idee aber da trau ich mich nicht drann ich bin nicht so versiert wie viele von euch find es aber trotzdem supper |
|
|
Dat Tunes |
Geschrieben am 19.02.2012 00000002 21:53
|
![]() Moderator ![]() Beiträge: 477 Registriert am: 07.12.08 Fusioneer: 16 years 4 months 4 weeks 29 days 7 hours 52 minutes 18 seconds |
Nicht schlecht Dirk, werde es gleich mal antesten, des ganze ist echt klasse Idee mal ![]() Für welche Fusion Version hast du den Mod geschrieben ? Bearbeitet von Dat Tunes am 19.02.2012 00000002 21:57 Leute ohne Macke, sind Kacke ![]() Oh Herr, schmeiss Grundwissen von Himmel ! |
|
|
emblinux |
Geschrieben am 20.02.2012 00000002 06:21
|
![]() Seiten Administrator ![]() Beiträge: 3813 Registriert am: 04.10.08 Fusioneer: 16 years 7 months 0 weeks 2 days 8 hours 38 minutes 57 seconds |
Ich glaube es war für die 1. 7er Release Version. Sollte aber auch auf die anderen anwendbar sein, mit kleinen Anpassungen würde ich sagen.
|
|
|
Paramedic-94 |
Geschrieben am 02.08.2015 00000008 21:29
|
![]() Mitglied ![]() Beiträge: 172 Registriert am: 17.01.11 Fusioneer: 14 years 3 months 2 weeks 19 days 11 hours 38 minutes 20 seconds |
Schade get nicht bei V7.02
|
|
|
Thomas |
Geschrieben am 03.08.2015 00000008 16:25
|
![]() Jung Mitglied ![]() Beiträge: 32 Registriert am: 18.01.09 Fusioneer: 16 years 3 months 2 weeks 18 days 14 hours 42 minutes 51 seconds |
Feine sache, und klappt sogar. |
|
|
Harlekin |
Geschrieben am 29.12.2015 00000012 08:39
|
![]() Administrator ![]() Beiträge: 132 Registriert am: 22.08.11 Fusioneer: 13 years 8 months 2 weeks 15 days 8 hours 51 minutes 45 seconds |
Klasse Mod, allerdings kann man so auch shouten für Gruppen, in denen man selber gar nicht ist. Sinnvoller wäre da bei "Lesbar für:" eine Auswahl der Gruppen, in denen der Schreiber sich selber befindet. Wie kann ich also die Auswahl so begrenzen? Bearbeitet von Harlekin am 10.01.2016 00000001 11:52 |
|
Springe ins Forum: |
Ähnliche Themen
Thema | Forum | Antworten | Letzter Beitrag |
---|---|---|---|
bestimmte Gruppe Rate | Infusionen | 5 | 17.12.2011 00000012 12:48 |
pd Warnig - Automatische Gruppen zuweisung | Allgemeine Support Fragen | 3 | 14.01.2011 00000001 16:54 |
ScoreSystem für bestimmte User ausschließen | Infusionen | 8 | 16.11.2010 00000011 09:16 |
Member Gruppen anlegen ? | Allgemeine Support Fragen | 10 | 17.09.2010 00000009 23:26 |
bestimmte größe eines Pop Up Festers | Allgemeine Support Fragen | 5 | 08.08.2010 00000008 12:31 |