Seite 20 von 67
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 05.04.2009 08:53
von MartectX
Mahony hat geschrieben:MartectX hat geschrieben:Sind das alle Bugfixes für 0.2.0?
Nein, nicht ganz. Ich muss das alles noch ordnen, zusammen bringen, noch einmal testen und in eine MODX schreiben.
Hab' Ende nächster Woche Geburtstag und das wäre das perfekte Geschenk *türülü*

Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 08.04.2009 02:39
von Mahony
Hallo
Schmischi
Mach mal diese Änderung wieder rückgängig (das war nicht optimal gelöst).
Mahony hat geschrieben:
Öffne die includes/functions_user.php
Suche in der includes/functions_user.php
Code: Alles auswählen
function user_delete($mode, $user_id, $post_username = false)
{
global $cache, $config, $db, $user, $auth;
global $phpbb_root_path, $phpEx;
Füge danach ein
Code: Alles auswählen
//Begin Thanks Post MOD
$sql = 'DELETE
FROM ' . THANKS_TABLE . '
WHERE thanks_from = ' . $user_id;
$db->sql_query($sql);
//End Thanks Post MOD
Jetzt folgt die optimale Lösung.
Suche in der includes/functions_user.php
Code: Alles auswählen
function user_delete($mode, $user_id, $post_username = false)
{
global $cache, $config, $db, $user, $auth;
global $phpbb_root_path, $phpEx;
Füge danach ein
Code: Alles auswählen
//Begin Thanks Post MOD
$sql = 'UPDATE ' . THANKS_TABLE . '
SET thanks_from = ' . ANONYMOUS . "
WHERE thanks_from = $user_id";
$db->sql_query($sql);
$sql = 'UPDATE ' . THANKS_TABLE . '
SET thanks_to = ' . ANONYMOUS . "
WHERE thanks_to = $user_id";
$db->sql_query($sql);
//End Thanks Post MOD
Suche
Code: Alles auswählen
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . $user_id;
$result = $db->sql_query($sql);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$user_row)
{
return false;
}
Füge danach ein
Code: Alles auswählen
//Begin Thanks Post MOD
if ($user_row['user_thanked'])
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_thanked = user_thanked + ' . $user_row['user_thanked'] . '
WHERE user_id = ' . ANONYMOUS;
$db->sql_query($sql);
}
if ($user_row['user_thanks'])
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_thanks = user_thanks + ' . $user_row['user_thanks'] . '
WHERE user_id = ' . ANONYMOUS;
$db->sql_query($sql);
}
if ($user_row['user_thanks_post'])
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_thanks_post = user_thanks_post + ' . $user_row['user_thanks_post'] . '
WHERE user_id = ' . ANONYMOUS;
$db->sql_query($sql);
}
//End Thanks Post MOD
Öffne viewtopic.php
Suche nach
Code: Alles auswählen
if ($poster_id == ANONYMOUS)
{
$user_cache[$poster_id] = array(
'joined' => '',
'posts' => '',
'from' => '',
Füge danach ein
Code: Alles auswählen
//Begin Thank Post MOD
'thanks' => (isset($row['user_thanks'])) ? $row['user_thanks'] : '',
'thanked' => (isset($row['user_thanked'])) ? $row['user_thanked'] : '',
'thanks_post' => (isset($row['user_thanks_post'])) ? $row['user_thanks_post'] : '',
//End Thank Post MOD
Suche
Code: Alles auswählen
//Begin Thank Post MOD
'thanks' => $row['user_thanks'],
'thanked' => $row['user_thanked'],
'thanks_post' => $row['user_thanks_post'],
//End Thank Post MOD
Ersetze mit
Code: Alles auswählen
//Begin Thank Post MOD
'thanks' => (isset($row['user_thanks'])) ? $row['user_thanks'] : '',
'thanked' => (isset($row['user_thanked'])) ? $row['user_thanked'] : '',
'thanks_post' => (isset($row['user_thanks_post'])) ? $row['user_thanks_post'] : '',
//End Thank Post MOD
Mit diesen Änderungen sind dann die Probleme mit gelöschten Usern vollständig beseitigt.
Hier noch ein Bugfix, damit sich ein User nicht über die URL bei sich selbst bedanken kann.
Öffne thanks.php
Suche nach
Code: Alles auswählen
$sql = 'SELECT thanks_from
FROM ' . THANKS_TABLE . '
WHERE post_id = ' . $post_id . '
AND thanks_from = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
$thanked_post = $db->sql_fetchfield('thanks_from');
$db->sql_freeresult($result);
Füge danach ein
Code: Alles auswählen
//Begin NEW The user can not thank himself.
$poster_id = $row['poster_id'];
//End NEW The user can not thank himself.
Suche nach
Code: Alles auswählen
switch ($mode)
{
case 'thanks':
if($thanked_post)
{
trigger_error('THANKS_CANT_ADD');
}
Füge danach ein
Code: Alles auswählen
//Begin NEW The user can not thank himself.
if($user->data['user_id'] == $poster_id)
{
trigger_error('THANKS_DISALLOW');
}
//End NEW The user can not thank himself.
Grüße: Mahony
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 08.04.2009 09:24
von Schmischi
Hallo Mahony
Ist bei mir eingepflegt und Funktioniert gut.
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 17.04.2009 23:12
von sepp71
Die Mod. läuft auch bei mir und bereitet allen viel Freude - dankeschön!
Habe jetzt nicht den ganzen Thread durchgekämmt, daher nur eine kurze Anregung:
In meinem Forum können sich die User selbst löschen, manche lösche ich nach längerer Inaktivität auch mit einer Mod. Jedenfalls bleibt dann immer anzeigt
"Gast123 ...
Danke gegeben:
Danke bekommen: mal in Posts"
Das sieht immer so unglücklich aus...
Mit if-Abfragen habe ich versucht, das zumindest in der viewtopic_html abzustellen, aber die Formulierung der Bedingungen für postrow.POSTER_THAKED und postrow.POSTER_THANKS habe ich nicht korrekt hinbekommen. Vermutlich ist bei einem Teil der gelöschten Benutzer der Wert leer (''), bei anderen Null und bei wieder anderen womöglich noch auf irgendwelchen größeren Zahlen, da ich den o.a. Bugfix gerade erst gefunden und eingebaut habe.
Charmant an diesem Ansatz fand ich auch, das jeweils leere Zeilen (wenn ein Benutzer sich noch nicht bedankt hatte) einfach wegblieben.
Nun werde ich wohl einen Workaround über das POSTER_JOINED gehen müssen - oder hat jemand eine bessere Idee?
Danke!
Sepp
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 17.04.2009 23:46
von Mahony
Hallo
Jedenfalls bleibt dann immer anzeigt
"Gast123 ...
Danke gegeben:
Danke bekommen: mal in Posts"
Das sieht immer so unglücklich aus...
Ich habe gerade erst die Bugfixes gesehen, die sich auf das Löschen von Benutzern beziehen und sie noch nicht ausprobiert, ob das Thema damit besser erledigt wird.
Du solltest besser meine Bugfixes einbauen, denn dadurch dürfte sich das erledigt haben.
P.S. Hier noch zwei Bugfixes:
Bugfix 1. Beschleunigt die Synchronisierung der Bedankungen (wichtig in größeren Foren), wenn Beiträge im Forum gelöscht wurden und man im ACP die Bedankungen synchronisieren möchte.
1. Setze indizes auf die Spalten
thanks_from und
thanks_to in der Tabelle
phpbb_thanks und auf die Spalte
post_thanked in der Tabelle
phpbb_posts.
Code: Alles auswählen
ALTER TABLE phpbb_thanks ADD INDEX (thanks_from);
ALTER TABLE phpbb_thanks ADD INDEX (thanks_to);
ALTER TABLE phpbb_posts ADD INDEX (post_thanked);
Bugfix 2. Fügt eine fehlende Sprachvariable hinzu. Diese wird im ACP -- Wartung -- Administrations-Protokoll verwendet um die Synchronisierung der Bedankungen anzuzeigen.
2. Suche in der
language/de/acp/common.php
Code: Alles auswählen
'LOG_DELETE_POST' => '<strong>Beitrag gelöscht</strong><br />» %s',
Füge danach ein
Code: Alles auswählen
'LOG_RESYNC_THANKSCOUNTS' => '<strong>Benutzer Bedankungen resynchronisiert</strong>',
Grüße: Mahony
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 18.04.2009 00:40
von sepp71
Hoppla, sorry, habe tatsächlich die Bugfixes probiert - es aber noch nicht korrekt hinbekommen und meinen obigen Beitrag entsprechend editiert. Ich lese jetzt noch einmal nach und probiere weiter.
Sepp
Edit 18.4. 16:55: Habe mittlerweile die Bugfixes eingebaut und meine o.a. Änderungen wieder entfernt. Das "Danke gegeben" und "Danke bekommen" steht aber zumindest bei den Usern, die sich mit dem "Selbst-Löschen-Mod" gelöscht habentrotzdem noch drin.
Ich hätte es gern so, dass jedenfalls in der viewtopic bei den User-Daten nur die Werte >0 angezeigt werden, also keine Anzeige, wenn Danke gegeben bzw. Danke bekommen =0 oder gar undefiniert ist. Besonders wichtig ist mir das bei en bereits in der Vergangenheit (vor dem Bugfixes) gelöschten Usern. Während alle anderen Registrierungsdetails dann nicht mehr angezeigt wird, werden die beiden Danke-Zeilen trotzdem (und mit "0") noch angezeigt.
Ich glaube, dass eine if-Abfrage wie bei den anderen Profildetails hier:
Code: Alles auswählen
<dd><strong>{L_THANKS}:</strong> {postrow.POSTER_THANKS}</dd>
<dd><strong>{L_THANKED}:</strong> {postrow.POSTER_THANKED} {L_IN} {postrow.POSTER_THANKS_POST}</dd>
helfen könnte, weiß aber nicht, auf welche Werte ich sie beziehen sollte.
Hast Du vielleicht doch noch einen Tipp?
Danke!
Sepp
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 20.04.2009 08:27
von Schmischi
Hallo Mahony
Ich weis ja nicht ob das so einfach möglich ist, aber eine Klasse Erweiterung des Mods wäre es wenn man sich die Posts auf die ein Danke gesetzt wurde mit einem Klick anzeigen lassen könnte.
Also z.B. wenn man in der Forenübersicht die zusätzliche Anzeige eingebaut hat und man klickt auf die Anzahl der Danke eines Users.
Als Ergebnis werden dann die Posts mit Danke angezeigt.
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 20.04.2009 12:31
von Mahony
Hallo sepp71
Was genau möchtest du nun haben? Soll bei den gelöschten Usern überhaupt nichts mehr in der viewtopic_body.html im Profil angezeigt werden, oder soll dort alles (Danke gegeben, Danke bekommen) mit 0 angezeigt werden?
@Schmischi - Nein, solch eine Funktion ist im Moment nicht geplant. Das mag vielleicht bei einem kleinen Forum noch ganz gut (übersichtlich) funktionieren, bei einem großen Forum (wo sich Tausende User Bedanken) würde das allerdings total unübersichtlich werden.
Grüße: Mahony
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 23.04.2009 15:35
von Schmischi
Mahony hat geschrieben:
@Schmischi - Nein, solch eine Funktion ist im Moment nicht geplant. Das mag vielleicht bei einem kleinen Forum noch ganz gut (übersichtlich) funktionieren, bei einem großen Forum (wo sich Tausende User Bedanken) würde das allerdings total unübersichtlich werden.
Grüße: Mahony
Hallo Mahony
Schade, ich hatte nach dem Einbau in meinem Forum schon einige Anfragen nach genau solch einer Funktion.
Die Leute freuen sich natürlich über ein Danke, wissen aber nicht für welchen Post sie es bekommen haben.
Da wäre eine solche Funktion sehr hilfreich.
Evtl. ja über ACP zu und abschaltbar.
Ich gebe mal die Hoffnung nicht auf.
Ansonsten Funktioniert alles super.
Vielen Dank noch mal für diesen Mod.
Re: [DEV] Thank Post Mod (hide MOD compatible ) 0.2.0
Verfasst: 23.05.2009 12:31
von Leinad3000
Muss ich irgendwelche Berechtigungen festlegen? Der zeigt bei mir keinen Thank post Button an, alles andere läuft einwandfrei.
Wenn ich mich über nen URL bedanken will kommt "Es ist nicht erlaubt dich in diesem Beitrag zu zu bedanken."