Alle Foren für alle Users abonnieren

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Antworten
PirKrier
Mitglied
Beiträge: 1
Registriert: 10.07.2023 16:55

Alle Foren für alle Users abonnieren

Beitrag von PirKrier »

Hallo

Gibt es eine Lösung/Möglichkeit, um alle bestehenden User auf alle Foren zu abonnieren (forcieren)?

Ich habe die Suche gebraucht, und nur herausgefunden, dass es bis jetzt nicht möglich ist.
Vielleicht gibt es inzwischen eine Extension, anderes Tool, oder ein geschriebenes SQL Statement, das dies ermöglicht?

Vielen Dank
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1172
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von Mike-on-Tour »

Mit den Bordmitteln von phpBB ist das nicht möglich; ob eine entsprechende Erweiterung existiert, weiß ich nicht.
Aber nach meiner Erinnerung hat vor ungefähr einem Jahr auf phpbb.com jemand eine ähnliche Frage gestellt, da wollte ein Lehrer alle Schüler einer bestimmten Klasse auf die für diese Klasse zutreffenden Foren abonnieren; m.W. hat man ihm damals einen möglichen Ansatz mittels SQL aufgezeigt.
PirKrier7
Mitglied
Beiträge: 1
Registriert: 10.07.2023 16:56

Re: Alle Foren für alle Users abonnieren

Beitrag von PirKrier7 »

Ich habe einen Code geschrieben, der es mir ermöglicht :grin: :

https://www.phpbb.com/community/viewtopic.php?t=2643925
Benutzeravatar
chris1278
Mitglied
Beiträge: 3702
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von chris1278 »

Ok ich hab mir dein Code mal angeschaut. Ich hab den Mal etwas optimiert. So kann den jeder Nutzen. Da du einen individuellen präfix hast hab ich das mal standardisiert gemacht. Schau dir den code mal an und gegeben falls bitte.

Code: Alles auswählen


<html>
<body>

<h1>Insert all Forum subscriptions for all Members</h1>

<?php

echo "<br>";

$servername		= 'Datenbank Server Adresse';
$username 		= 'Benutzername';
$password 		= 'Passwort';
$dbname 		= 'Datenbankname';
$table_prefix	= 'phpbb_';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
{
	echo "geet net";
	die("Connection failed: " . $conn->connect_error);
}

// Delete all existing notifications in table
$sql_del = 'DELETE FROM ' . $table_prefix . 'forums_watch';

echo $sql_del."<br>";

if ($conn->query($sql_del) === TRUE)
{
  echo "All rows deleted successfully<br><br>";
}
else
{
  echo "Error deleting record: " . $conn->error;
}


// Search for existing forums. Forums with Parent_id = 19 are only for restricted users, so no notification for all users.
$sql1 = 'SELECT * FROM ' . $table_prefix . 'forums WHERE parent_id <> 19 and parent_id <> 0';
$result1 = $conn->query($sql1);
$countrows=0;
$countforums=0;

if ($result1->num_rows > 0)
{
	while($row1 = $result1->fetch_assoc())
	{
	$countforums++;
	// output data of each row
	echo "<b>forum_id: " . $row1["forum_id"]. " - Name: " . $row1["forum_name"]. "</b><br>";

	// Search for existing users.
	$sql2 = 'SELECT * FROM ' . $table_prefix . 'users';

	$result2 = $conn->query($sql2);

	if ($result2->num_rows > 0)
	{
		while($row2 = $result2->fetch_assoc())
		{
			$countrows++;
			// output data of each row
			//echo "user_id: " . $row2["user_id"]. " - Name: " . $row2["username"]. " - Groupid: " . $row2["group_id"]. "<br>";

			// Insert notifications in table
			$sql_insert = 'INSERT INTO ' . $table_prefix . 'forums_watch (forum_id, user_id, notify_status) VALUES (' . $row1["forum_id"] . ' ,  ' . $row2["user_id"] . ' , 0)';

			echo $sql_insert;

			if ($conn->query($sql_insert) === TRUE)
			{
				echo " New record created successfully  ". " <br>";
			}
			else
			{
				echo " Error: " . $sql_insert . "<br>" . $conn->error;
			}
		}
	}
	else
	{
	  echo "0 results SQL2";
	}

	}
}
else
{
	echo "0 results SQL1";
}
echo "<br><b> ". $countforums. " Forums updated. ". $countrows." rows inserted </b><br>";

echo "<br><br><b>Insert Forum subscriptions for ABC-Members </b><br>";

// Search for users belonging to certain custom field. Insert notifications only for these users to restricted Forums 9, 10 an 11.
$sql3 = 'SELECT user_id, pf_phpbb_fonction_os FROM ' . $table_prefix . 'profile_fields_data where pf_phpbb_fonction_os = 9 OR pf_phpbb_fonction_os = 10 OR pf_phpbb_fonction_os = 11';
$result3 = $conn->query($sql3);
$countrows=0;
if ($result3->num_rows > 0) 
{
	  // output data of each row
	while($row3 = $result3->fetch_assoc())
	{
		$countrows++;
		echo "user_id: " . $row3["user_id"]. "pf_phpbb_fonction_os: " . $row3["pf_phpbb_fonction_os"]. "<br>";
		$sql_insert = 'INSERT INTO ' . $table_prefix . 'forums_watch (forum_id, user_id, notify_status) VALUES (20, " . ' . $row3["user_id"] . ' .", 0)';

		echo $sql_insert;

		if ($conn->query($sql_insert) === TRUE)
		{
			echo "New record created successfully  ". " <br>";
		}
		else
		{
			echo "Error: " . $sql_insert . "<br>" . $conn->error;
		}

		$countrows++;
		$sql_insert = 'INSERT INTO ' . $table_prefix . 'forums_watch (forum_id, user_id, notify_status) VALUES (23, " . ' . $row3["user_id"] . ' .", 0)';
		echo $sql_insert;
		if ($conn->query($sql_insert) === TRUE)
		{
			echo "New record created successfully  ". " <br>";
		}
		else
		{
			echo "Error: " . $sql_insert . "<br>" . $conn->error;
		}
}
}
else
{
	echo "0 results SQL3";
}

echo "<br><b> ". $countrows." rows ABC inserted <br>";

$conn->close();
?>

</body>
</html>

Du hast da natürlich noch deine Benutzerdefinierten Profilfelder die gibts ja standard nicht. Ich denke für nur den Standard wäre das hier Korrekt:

Code: Alles auswählen


<html>
<body>

<h1>Insert all Forum subscriptions for all Members</h1>

<?php

echo "<br>";

$servername		= 'Datenbank Server Adresse';
$username 		= 'Benutzername';
$password 		= 'Passwort';
$dbname 		= 'Datenbankname';
$table_prefix	= 'phpbb_';


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
{
	echo "geet net";
	die("Connection failed: " . $conn->connect_error);
}

// Delete all existing notifications in table
$sql_del = 'DELETE FROM ' . $table_prefix . 'forums_watch';

echo $sql_del."<br>";

if ($conn->query($sql_del) === TRUE)
{
  echo "All rows deleted successfully<br><br>";
}
else
{
  echo "Error deleting record: " . $conn->error;
}


// Search for existing forums. Forums with Parent_id = 19 are only for restricted users, so no notification for all users.
$sql1 = 'SELECT * FROM ' . $table_prefix . 'forums WHERE parent_id <> 19 and parent_id <> 0';
$result1 = $conn->query($sql1);
$countrows=0;
$countforums=0;

if ($result1->num_rows > 0)
{
	while($row1 = $result1->fetch_assoc())
	{
	$countforums++;
	// output data of each row
	echo "<b>forum_id: " . $row1["forum_id"]. " - Name: " . $row1["forum_name"]. "</b><br>";

	// Search for existing users.
	$sql2 = 'SELECT * FROM ' . $table_prefix . 'users';

	$result2 = $conn->query($sql2);

	if ($result2->num_rows > 0)
	{
		while($row2 = $result2->fetch_assoc())
		{
			$countrows++;
			// output data of each row
			//echo "user_id: " . $row2["user_id"]. " - Name: " . $row2["username"]. " - Groupid: " . $row2["group_id"]. "<br>";

			// Insert notifications in table
			$sql_insert = 'INSERT INTO ' . $table_prefix . 'forums_watch (forum_id, user_id, notify_status) VALUES (' . $row1["forum_id"] . ' ,  ' . $row2["user_id"] . ' , 0)';

			echo $sql_insert;

			if ($conn->query($sql_insert) === TRUE)
			{
				echo " New record created successfully  ". " <br>";
			}
			else
			{
				echo " Error: " . $sql_insert . "<br>" . $conn->error;
			}
		}
	}
	else
	{
	  echo "0 results SQL2";
	}

	}
}
else
{
	echo "0 results SQL1";
}
echo "<br><b> ". $countforums. " Forums updated. ". $countrows." rows inserted </b><br>";

$conn->close();
?>

</body>
</html>

Mit dieser Variante sollte den Code auch jeder benutzen Können. Eventuell Mach ich mir wenn ich mal zeit habe die Mühe und bastle daraus ne Extension. Das wäre in jedem fall sicherer aber im Moment keine Zeit. Außerdem müsste man eigentlich auch die entsprechende Berechtigung berücksichtigen weil es gibt die Berechtigung "Kann Forum abbonieren". Hier wäre zu testen ob wenn man das Skript ausführt der Benutzer jedoch nicht das Recht zum abonnieren hat er dennoch eine Nachricht erhält.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1172
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von Mike-on-Tour »

Man kann es natürlich kompliziert machen, einfacher ist:
Wenn dieses Skript im root gespeichert ist, also dort wo auch die config.php gespeichert ist, dann kann man diese doch einfach inkludieren (include('config.php')) und dann die dort verwendeten Variablen für die Datenbank, den Host, den Nutzer und das Passwort verwenden. Dann braucht keiner mehr das Skript ändern (außer natürlich den Tabellennamen, wenn der abweicht).
Benutzeravatar
chris1278
Mitglied
Beiträge: 3702
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von chris1278 »

Also ich hab das Skript nicht geschrieben hab lediglich sein Skript angepasst. Das was er geschrieben hat kann man nur bei seinem Forum nutzen.

Außerdem wäre es eh besser das ganze als Extension im Adminbereich zu machen aber dafür fehlt mir im Moment die Zeit. Aber Prinzipiell gebe ich dir recht das mit dem inkludieren wäre ne Möglichkeit.
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4973
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von Talk19zehn »

Hi, und wo kann ich als Benutzer und/oder registriertes Mitglied diesem Vorhaben zustimmen oder gar ablehnen? Weshalb wird in Benutzerrechte eingegriffen? Was machen die Benachrichtigungen oder gar E-Mails, falls ich das alles gar nicht nutze. Wird das Script aktiv und schreibt jene Rechte der Benutzer im persönlichen Bereich einfach um? Jene Benutzerrechte gibt es m.E. nicht grundlos. Laufen die Benachrichtigungen irgendwann über und mein E-Mail-Postfach wird "zugeschüttet"?

Mir fielen noch zig Fragen ein.

Sorry, für meine Gedanken, die mich auch hinsichtlich der DSGVO interessieren würden.

LG
Adventereigniskalender für phpBB 3.3.x
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3702
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von chris1278 »

Nun ja das ist schwierig zu beantworten. Wenn man es genau nimmt dann würde diese Funktion das Forum zu einem aktiven Newsletter machen. Diesen müsste man aber in den Nutzungsbedingungen und Datenschutzerklärung als solche auch bekanntgeben.

Wobei hier auch angemerkt sei das selbst wenn der Admin dieses Skript ausführt dies nur auf vorhandene Benutzer greifen würde. Würde sich nach ausführen des Skriptes ein neuer Benutzer Registrieren dann würden für diesen wieder die Standard Einstellungen gelten.

Um deine anderen Fragen zu beantworten.

Das Skript setzt für alle Foren für alle zum Zeitpunkt registrierten Benutzer die Abo Funktion auf aktiv. Sprich der Benutzer würde bei jedem Thema eine Info bekommen.

Jedoch kann der Benutzer selber diese Abos wieder abstellen.

Ich persönlich würde das auch nicht machen mit dem Skript, aber es gibt durchaus Situationen wo das sinnvoll Wäre. Allerdings würde ich hier auch das Skript erweitern das man einträgt welche Foren und für welche Benutzer.

Es ist halt schwierig. Aber auch bei dem Skript heißt es das liegt in der Verantwortung des Forenadmins.
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4973
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren via Script

Beitrag von Talk19zehn »

Alle Foren für alle Users abonnieren via Script

Tja,
chris1278 hat geschrieben: 13.07.2023 08:45 Es ist halt schwierig. Aber auch bei dem Skript heißt es das liegt in der Verantwortung des Forenadmins.
Einen Sinn kann ich an keiner Stelle der zunächst vorgetragenen Argumente erkennen.

(Foren)Admins und Betreiber können schon einmal voneinander abweichen.

Welcher Flaschenhals ggf. überläuft, ist noch eine ganz andere Frage in Sachen Datenbankabfragen uvm.

Eine bloße Aussage in jener EXT oder jenem Script, dass die Verantwortung bei *Forenadmins läge, ist mehr als vage. Jedenfalls aus meiner Sicht. *Gibt es eine ladungsfähige Anschrift / Impressum .... eines Betreibers (Nutzers / Anwenders)? Ich glaube, die Situation wird für einen derartigen kurz angerissenen Einsatz im Grundsatz unterschätzt.

Es gibt Feeds, es gibt eine EXT NL, es gibt die privacyprotection usw. usf. und Anwälte des Vertrauens als auch Datenschutzbeauftragte, die sicherlich gern im Sinne einer Beratung zur Seite stehen dürfen. Was wir hier nicht leisten können oder gar dürften.


Okay, warum heißt der Vorschläger einerseits PirKrier7 und anderseits PirKrier?


Nun denn, ---

freundliche Grüße
Adventereigniskalender für phpBB 3.3.x
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3702
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Alle Foren für alle Users abonnieren

Beitrag von chris1278 »

Wie gesagt das Skript selber hab ich nicht geschrieben. Ich hab's lediglich so gesäubert das auch andere es Benutzen Könnten.

Und nun ja ich denke schon das es in dem ein oder anderem Fall schon sinvoll ist. Wenn ich mal auf den Beitrag vom Mike zurückgreife:
PirKrier hat geschrieben: 10.07.2023 17:05 Aber nach meiner Erinnerung hat vor ungefähr einem Jahr auf phpbb.com jemand eine ähnliche Frage gestellt, da wollte ein Lehrer alle Schüler einer bestimmten Klasse auf die für diese Klasse zutreffenden Foren abonnieren
Also das wäre durchaus eine Situation wo so eine Art von Skript hilfreich ist.

Ich sehe auch hier nicht wirklich irgendwelche Benutzerrechte verletzt (meiner Meinung nach) da ja nicht die Einstellung dauerhaft greift. Jeder Benutzer kann das ja wieder abstellen.

Und ja Talkzehn auch die Aussage das das in der Verantwortung des Forenadmins (Betreiber) liegt ist schon Richtig. Weil auch die Leute die Extension bereitstellen (so wie ich selber auch) stellen diese Bereit aber haften tut dennoch immer der Forenbetreiber.

Und Was Abmahn-Anwälte angeht so denke ich nicht das hier irgendein Problem auftritt. Da dies ja nur ne Funktion des Forums ist. Und ok ob man das mittels Skript so machen sollte ist eine andere Sache. Aber ich bin kein Anwalt also kann ich auch keine Rechtsverbindliche Auskunft geben.

Nur wenn man das Skript ausführt und alles auf Abo stellt entspricht das Forum ja eher einem Newsletter und da reicht es wenn man in der Datenschutz Erklärung entsprechenden Passus drin hat. Und in den Nutzungsbedingungen.

Aber lassen wir das Thema hier mal so auf sich beruhen sonst artet das wieder in eine Grundsatzdiskussion aus. Fakt ist jedenfalls das Skript setzt die Werte nur für die bereits vorhandenen Benutzer so ein bei danach neu registrierten Benutzer sind die Werte wieder Standard.
Antworten

Zurück zu „Support-Forum“