Alle Postings an Normaluser (Technics)

by Martin66, Monday, March 19, 2018, 19:27 (2227 days ago)

Hi,


ich stelle mein Forum gerade auf Version 2.3.5. um. Dabei taucht für mich mal wieder ein Problem auf, das ich schon lange mit mir herumtrage (ich glaube, ich hatte hier dereinst auch schon mal was dazu gepostet. Falls in einer neueren Version als 2.3.5 das doch umgesetzt sein sollte, bitte einfach eine kurze Info):

Ich habe einige wenige User, die gern alle Postings bekommen würden - ohne gleich Moderatoren zu sein. Bisher löse ich das so, dass ich für diese User manuell das Feld userdata.new_user_notification auf "1" stelle, und unter includes/functions.inc.php in der Zeile

$recipient_result = @mysqli_query($connid, "SELECT user_name, user_email FROM ".$db_settings['userdata_table']." WHERE user_type > 0 AND new_posting_notification=1") or raise_error('database_error',mysqli_error($connid));

die WHERE-Klausel wie folgt geändert habe:

WHERE new_posting_notification=1

Das funktioniert auch. Aber nun meine Frage: Warum eigentlich sollte nicht jeder User die Möglichkeit bekommen, selbst zu entscheiden, ob er alle Postings bekommt? Dazu müsste man nur ALLEN Usern unter "Benutzerbereich/Profil bearbeiten" die Möglichkeit einräumen, bei neuen Einträgen benachrichtigt zu werden. So, wie das Mods/Admiins auch haben.

Falls ich mit diesem Änderungswunsch nicht durchkomme, so stellt sich mir rein technisch dennoch die Frage, warum im Code diesbezüglich so manch "weißer Schimmel" zu finden ist? Genauer gesagt: Momentan können ohnehin zwingend nur User aus der Teilmenge der Mods/Admins alle Mails bekommen. WHERE user_type > 0 AND new_posting_notification=1 sichert das doppelt ab, die Änderung zu WHERE new_posting_notification=1 bewirkt also nur etwas, wenn man (wie ich) manuell etwas an den Tabellen ändert. Da könnte man doch den Code wenigstens vereinfachen?

Für den Fall, dass meinem Änderungswunsch doch nachgekommen wird: Als Nächstes müsste man unter themes/default/subtemplates/user_edit.inc.tpl fast am Ende des Codes folgende Änderung vornehmen:

~~~~~~~~~~~~
<tr>
<td class="c"><strong>{#edit_user_notification#}</strong></td>
<td class="d"><input id="new_posting_notification" type="checkbox" name="new_posting_notification" value="1"{if $new_posting_notification=="1"} checked="checked"{/if} /><label for="new_posting_notification">{#admin_mod_notif_posting#}</label>
{if $mod||$admin}<br />
<input id="new_user_notification" type="checkbox" name="new_user_notification" value="1"{if $new_user_notification=="1"} checked="checked"{/if} /><label for="new_user_notification">{#admin_mod_notif_register#}</label></td>
{/if}
</tr>
~~~~~~~~~~~~

Damit wird die entsprechende Checkbox immer angezeigt. Dummerweise wird die Änderung aber noch nicht in der Tabelle eingetragen. Wahrscheinlich ist es Code unter includes/user.inc.php, der das verhindert. Aber offen gestanden, blicke ich da nicht durch. Auch hier gibt es Code, der das in der Form des "weißen Schimmels" (s.o.) verhindert.

Martin


Complete thread:

 RSS Feed of thread