[DEV] Thank Post Mod (hide MOD compatible )

Hier gibt es phpBB3.0.x MODs zum Downloaden.
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Da der Thank Post MOD Version 0.4.0 für größere Foren leider nicht geeignet ist (verbraucht zu viel Arbeitsspeicher), habe ich mich mal daran gemacht und einen neuen MOD (basierend auf idiotnesias "Thanks First Post MOD") geschrieben. Anders als beim original MOD, kann man sich bei jedem User bedanken und der MOD ist mit dem Simple Hide BBcode MOD 0.4.0 kompatibel (siehe 'Hide MOD Addon' im contrib Verzeichnis).

Die Änderungs-Anleitungen für verschiedene Styles findet man hier Simple Hide BBcode (Styles).

Weiterhin hat der MOD, anders als der original MOD, eigene Sprachdateien.

Ein Backup bevor ihr zu modden anfangt ist, wie immer, empfohlen.
MOD-Titel: Thank Post Mod (hide MOD compatible )
MOD-Version: 0.2.0
MOD-Beschreibung:
  • Nach Installation des MODs, können sich die Benutzer des Forums bei anderen Benutzern bedanken.
    Dieser MOD ist mit dem "Simple Hide BBcode MOD" kompatibel (siehe 'Hide MOD Addon' im contrib Verzeichnis).
MOD Description:
  • After installing this mod, user can give thanks in post.
    The MOD is compatible with the 'Simple Hide BBcode MOD' (see contrib Folder).
MOD-Autoren: Mahony (original MOD by idiotnesia )
MOD-Download: Download v0.2.0

Paypal-Spende:
  • Bild
phpBB-Version: phpBB 3.0.4

To enable the MOD for a forum, do the following steps.
Edit a Forum and under "General forum settings" you will find the Option "Enable the Thanks MOD:"
  • ACP - Forums
    -Manage Forums
    -Pick a forum and hit edit
    -Click the radio button that says "Enable the Thanks MOD."
    -Hit Submit and it should be active for that forum.
Zur Aktivierung des MODs für ein Forum, gehe so vor.
  • ACP - Foren anwählen
    -Foren verwalten
    -wähle ein Forum und klick auf Ändern (das grüne Zahnrad anklicken)
    -Klick auf den Radio Button mit der Aufschrift "Thanks MOD aktivieren:" wähle hier
    Ja"
    -Klick auf Absenden (unten) und der MOD ist für das gewählte Forum aktiviert

EDIT: Es gibt nun auch ein Advanced Points System( Thanks Addon) für den Points System MOD
Danke an Adrian für dieses Addon.

EDIT 2: Da die original-Seite, von Adrian, manchmal Down ist (nicht erreichbar bzw. Style Fehler) hänge ich das Addon mal hier an den Beitrag an.
Advanced Points System( Thanks MOD Addon).zip
(23.5 KiB) 930-mal heruntergeladen
Advanced Points System( Thanks MOD Addon).zip
(23.5 KiB) 930-mal heruntergeladen
EDIT 3: Hier noch das Top x Thanked Addon
top_thanked.zip
(29 KiB) 781-mal heruntergeladen
top_thanked.zip
(29 KiB) 781-mal heruntergeladen
EDIT 4: Hier noch ein deutschsprachiger Danke-Button für den prosilver - Style
icon_post_thanks.gif
icon_post_thanks.gif (1.43 KiB) 18874 mal betrachtet
icon_post_thanks.gif
icon_post_thanks.gif (1.43 KiB) 18874 mal betrachtet
EDIT 5: Hier noch ein deutschsprachiger Danke-Button für den subsilver2 - Style
icon_post_thanks.gif
icon_post_thanks.gif (473 Bytes) 18873 mal betrachtet
icon_post_thanks.gif
icon_post_thanks.gif (473 Bytes) 18873 mal betrachtet
Tipp: Mit diesem SQL Befehl

Code: Alles auswählen

UPDATE phpbb_forums SET enable_thanks = "1" WHERE enable_thanks = "0";
aktiviert man den MOD in allen Foren.

Hidden Message Test
Its a Test
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Für User die den Danke Button nur im ersten Post haben möchten, bietet sich die folgende Lösung an (für den prosilver Style).
Suche in der viewtopic_body.html

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><li class="thanks-icon"><a href="{postrow.U_THANKS}" title="{L_THANKS}"><span>{L_THANKS}</span></a></li><!-- ENDIF -->

Füge davor ein

Code: Alles auswählen

<!-- IF postrow.S_FIRST_ROW == 2 --> 
Füge danach ein

Code: Alles auswählen

<!-- ENDIF -->
für subsilver2
Suche in der viewtopic_body.html

Suche

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><a href="{postrow.U_THANKS}"><img src="{T_IMAGESET_PATH}/thankposts.gif" alt="{L_THANKS}" /></a><!-- ENDIF -->
Füge davor ein

Code: Alles auswählen

<!-- IF postrow.S_FIRST_ROW == 2 -->
Füge danach ein

Code: Alles auswählen

<!-- ENDIF -->
Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Wenn Gäste den Danke Button nicht sehen sollen, bietet sich das folgende Snippet an.

Suche in der viewtopic_body.html

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><li class="thanks-icon"><a href="{postrow.U_THANKS}" title="{L_THANKS}"><span>{L_THANKS}</span></a></li><!-- ENDIF -->
Füge davor ein

Code: Alles auswählen

<!-- IF S_USER_LOGGED_IN -->

Füge danach ein

Code: Alles auswählen

<!-- ENDIF -->

Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier eine kleine Korrektur für die User, die den Danke Button nur im ersten Post haben möchten (bei der obigen Lösung, konnte man wenn der Thread über mehrere Seiten ging, auf jeder ersten Seite eine Bedankung abgeben).

Open: thanks.php -- Öffne: thanks.php

Find -- Suche

Code: Alles auswählen

WHERE p.post_id = ' . $post_id;
Replace With -- Ersetze mit

Code: Alles auswählen

WHERE p.post_id = ' . $post_id . '
      AND p.post_id = t.topic_first_post_id';

Open: viewtopic.php -- Öffne: viewtopic.php

Find -- Suche

Code: Alles auswählen

'S_FIRST_POST'      => true,
Replace With -- Ersetze mit

Code: Alles auswählen

'S_FIRST_POST'      => ($row['post_id'] == $topic_data['topic_first_post_id']) ? true : false,
Open: viewtopic_body.html (prosilver) -- Öffne: viewtopic_body.html (prosilver)

Find -- Suche

Code: Alles auswählen

<!-- IF postrow.S_FIRST_ROW == 2 -->
					<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><li class="thanks-icon"><a href="{postrow.U_THANKS}" title="{L_THANKS}"><span>{L_THANKS}</span></a></li><!-- ENDIF --><!-- ENDIF -->
Replace With -- Ersetze mit

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><li class="thanks-icon"><a href="{postrow.U_THANKS}" title="{L_THANKS1}"><span>{L_THANKS1}</span></a></li><!-- ENDIF -->
Open: viewtopic_body.html (for subsilver2) -- Öffne: viewtopic_body.html (für subsilver2)

Find -- Suche

Code: Alles auswählen

<!-- IF postrow.S_FIRST_ROW == 2 -->
<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><a href="{postrow.U_THANKS}"><img src="{T_IMAGESET_PATH}/thankposts.gif" alt="{L_THANKS}" /></a><!-- ENDIF --><!-- ENDIF -->
Replace With -- Ersetze mit

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><a href="{postrow.U_THANKS}"><img src="{T_IMAGESET_PATH}/thankposts.gif" alt="{L_THANKS1}" /></a><!-- ENDIF -->
For users with the above change - Always remove the code
Für User mit der obigen Änderung - Also Immer am Anfang das entfernen

Code: Alles auswählen

<!-- IF postrow.S_FIRST_ROW == 2 -->
und am Ende das hier

Code: Alles auswählen

<!-- ENDIF -->

Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier noch ein AddOn um die Anzeige, wer sich bedankt hat per Klick Ein/Ausklappen zu können.
Für prosilver:

Öffne viewtopic.php
Find

Code: Alles auswählen

if (isset($cp_row['row']) && sizeof($cp_row['row']))
   {
      $postrow = array_merge($postrow, $cp_row['row']);
   }
Add after:

Code: Alles auswählen

$postrow['S_POST_NUM'] = $start + ($i+1);
Öffne styles/prosilver/theme/content.css
Find:

Code: Alles auswählen

.postprofile {
/* Also see tweaks.css */
margin: 5px 0 10px 0;
min-height: 80px;
color: #666666;
border-left: 1px solid #FFFFFF;
width: 22%;
float: right;
display: inline;
}
Add after:

Code: Alles auswählen

.postprofile1 {
/* Also see tweaks.css */
margin: 5px 0 10px 0;
color: #666666;
border-left: 1px solid #FFFFFF;
width: 22%;
float: left;
display: inline;
}
Öffne styles/prosilver/template/overall_header.html
Find:

Code: Alles auswählen

</head>
Add BEFORE:

Code: Alles auswählen

<script type="text/javascript">
// <![CDATA[
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
// ]] >
</script>
Öffne styles/prosilver/template/viewtopic_body.html
Find:

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and postrow.THANKS_LIST -->
<div class="post bg3">
      <div class="inner"><span class="corners-top"><span></span></span>
         <dl class="postbody">
            <dd><strong>{postrow.THANKS_FROM}</strong><br />{postrow.THANKS_LIST}</dd>

         </dl>
         <!-- IF postrow.S_GIVE_THANKS --> 
         <dl>
            <dt class="postprofile" style="text-align: center;"><a href="{postrow.U_THANKS}"><img src="{T_IMAGESET_PATH}/removethankspro.gif" alt="{L_THANKS_REMOVE}"/></a></dt>
         </dl><!-- ENDIF -->
      <span class="corners-bottom"><span></span></span></div>
   </div>
   <hr class="divider" />
   <!-- ENDIF -->
REPLACE with:

Code: Alles auswählen

<!-- IF postrow.S_FIRST_POST and postrow.THANKS_LIST -->
<div class="post bg3">
      <div class="inner"><span class="corners-top"><span></span></span>
         <dl class="postbody">
            <dd><strong>{postrow.THANKS_FROM}</strong>: [<a style="cursor: hand; cursor: pointer;" onclick="toggle_visibility('{postrow.S_POST_NUM}');">Show Me</a>]<div style="display:none" id="{postrow.S_POST_NUM}">{postrow.THANKS_LIST}</div></dd>

         </dl>
         <!-- IF postrow.S_GIVE_THANKS --> 
         <dl>
            <dt class="postprofile1" style="text-align: center;"><a href="{postrow.U_THANKS}"><img src="{T_IMAGESET_PATH}/removethankspro.gif" alt="{L_THANKS_REMOVE}"/></a></dt>
         </dl><!-- ENDIF -->
      <span class="corners-bottom"><span></span></span></div>
   </div>
   <hr class="divider" />
   <!-- ENDIF -->
Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Da der MOD noch in der Entwicklung ist und noch nicht alle Änderungen in der Installations-Anleitung enthalten sind, habe ich mal diesen Beitrag hier verfasst.


Für Sprachabhängige Buttons gilt folgendes:
Zuerst das icon_post_thanks.gif in der gewünschten Sprache erstellen und danach nach
/styles/meinstyle/imageset/xx hoch laden (wobei meinstyle für deinen Style z.b. subsilver2 steht und xx für deine Sprache z.b. de )


Für subsilver2 bedeutet das folgendes:
In /styles/subsilver2/imageset/xx/imageset.cfg
muss folgendes eingetragen werden (für die Sprachabhängigen Buttons)

Code: Alles auswählen

img_icon_post_thanks = icon_post_thanks.gif
und zwar nach

Code: Alles auswählen

img_icon_post_quote = icon_post_quote.gif
Dann in der viewtopic.php noch folgendes
Suche

Code: Alles auswählen

'WARN_IMG'			=> $user->img('icon_user_warn', 'WARN_USER'),
Füge danach ein

Code: Alles auswählen

'THANKS_IMG'			=> $user->img('icon_post_thanks', 'THANKS1'),
In der subsilver2/template/viewtopic_body.html

Suche

Code: Alles auswählen

<!-- IF postrow.U_EDIT --><a href="{postrow.U_EDIT}">{EDIT_IMG}</a> <!-- ENDIF -->
füge davor ein

Code: Alles auswählen

<!-- IF not S_IS_BOT --><!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><!-- IF THANKS_ENABLE --><a href="{postrow.U_THANKS}">{THANKS_IMG}</a><!-- ENDIF --><!-- ENDIF -->
Für prosilver:
In der styles/prosilver/imageset/x/imageset.cfg
Suche

Code: Alles auswählen

img_icon_post_quote = icon_post_quote.gif*20*54
Füge davor ein

Code: Alles auswählen

img_icon_post_thanks = icon_post_thanks.gif*20*55
In der styles/prosilver/template/viewtopic_body.html
Suche

Code: Alles auswählen

<!-- IF postrow.U_EDIT --><li class="edit-icon"><a href="{postrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li><!-- ENDIF -->
Füge davor ein

Code: Alles auswählen

<!-- IF S_USER_LOGGED_IN -->
					<!-- IF postrow.S_FIRST_POST and not postrow.S_GIVE_THANKS and not postrow.S_IS_OWN_POST --><!-- IF THANKS_ENABLE --><li class="thanks-icon"><a href="{postrow.U_THANKS}" title="{L_THANKS1}"><span>{L_THANKS1}</span></a></li><!-- ENDIF --><!-- ENDIF --><!-- ENDIF -->
In der styles/prosilver/theme/buttons.css
Suche

Code: Alles auswählen

.quote-icon, .quote-icon a		{ background: none top left no-repeat; }
Füge danach ein

Code: Alles auswählen

.thanks-icon, .thanks-icon a		{ background: none top left no-repeat; }
Suche

Code: Alles auswählen

ul.profile-icons li.quote-icon	{ width: {IMG_ICON_POST_QUOTE_WIDTH}px; height: {IMG_ICON_POST_QUOTE_HEIGHT}px; }
Füge danach ein

Code: Alles auswählen

ul.profile-icons li.thanks-icon	{ width: {IMG_ICON_POST_THANKS_WIDTH}px; height: {IMG_ICON_POST_THANKS_HEIGHT}px; }
In der styles/prosilver/theme/colours.css
Suche

Code: Alles auswählen

.quote-icon, .quote-icon a		{ background-image: url("{IMG_ICON_POST_QUOTE_SRC}"); }
Füge danach ein

Code: Alles auswählen

.thanks-icon, .thanks-icon a		{ background-image: url("{IMG_ICON_POST_THANKS_SRC}"); }
Für das LOG im ACP muss der Eintrag unter language/x/acp/common.php

Code: Alles auswählen

'LOG_RESYNC_THANKSCOUNTS'			=> '<strong>Benutzer Bedankungen resynchronisiert</strong>',
Hinzugefügt werden und zwar nach

Code: Alles auswählen

'LOG_DELETE_POST'		=>'<strong>blahblah</strong>',
Anschließend nicht vergessen den cache zu leeren!


P.S. Bevor ihr anfangt, empfehle ich, wie immer, ein Backup zu machen!






Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier noch ein Bugfix für das "undefined index" Problem, wenn ein User gelöscht wurde und man einen Beitrag von ihm öffnet in dem er sich bedankt hatte oder bei dem er ein Danke bekam.

Here is a fix for the "undefined index" problem when a user has been deleted.

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.



Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier noch ein Bugfix, damit sich ein User nicht über die URL bei sich selbst bedanken kann.

Here is a fix so that a user can not Thank himself over the URL.

Ö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
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier noch ein Bugfix für das unhide Problem, bei dem der versteckte Text, nach einem erneuten Besuch des Threads in dem ein User sich bedankt hat, nicht mehr sichtbar war.

Here is a fix for the Unhide problem in which the hidden text was no longer visible.
  • SQL:

    Code: Alles auswählen

    ALTER TABLE `phpbb_thanks` ADD `topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0';
  • viewtopic.php öffnen.
    • Suchen nach:

      Code: Alles auswählen

      // Check if the topic viewer has posted in a topic
      $unhide = false;
      $sql = 'SELECT post_thanked
         FROM ' . POSTS_TABLE . '
         WHERE post_id = ' . $post_id;
      $result = $db->sql_query($sql);
      $post_thanked = $db->sql_fetchfield('post_thanked');
      $db->sql_freeresult($result);
      if ($user->data['user_id'] != ANONYMOUS)
      {
         // If moderator or admin, skip reply check, auto unhide
         if ($auth->acl_get('m_', $forum_id))
         {
            $unhide = true;
         }
         
         else if ($post_thanked > 0)
         {
            $unhide = true;
         }
         else
         {
         $sql = "SELECT poster_id, topic_id
            FROM " . POSTS_TABLE . "
            WHERE topic_id = $topic_id
            AND poster_id = " . $user->data['user_id'];
      
         $result = $db->sql_query($sql);
         $unhide = $db->sql_affectedrows($result) ? true : false;
         $db->sql_freeresult($result);
         }
      }
      Ersetzen durch:

      Code: Alles auswählen

      // Unhide Check
      $unhide = false;
      if ($user->data['user_id'] != ANONYMOUS)
      {
         // If moderator or admin, skip reply check, auto unhide
         if ($auth->acl_get('m_', $forum_id))
         {
            $unhide = true;
         }
         else
         {
      	   // Check if the topic viewer has said thanks in that topic
      	   $sql = "SELECT topic_id, thanks_from
      		  FROM " . THANKS_TABLE . "
      		  WHERE topic_id = $topic_id
      		  AND thanks_from = " . $user->data['user_id'];
      
      	   $result = $db->sql_query($sql);
      	   $unhide = $db->sql_affectedrows($result) ? true : false;
      	   $db->sql_freeresult($result);
      
      	   // Check if the topic viewer has posted in that topic
      	   if ($unhide == false) 
      	   {
      	      $sql = "SELECT poster_id, topic_id
      		     FROM " . POSTS_TABLE . "
      		     WHERE topic_id = $topic_id
      		     AND poster_id = " . $user->data['user_id'];
      
      	      $result = $db->sql_query($sql);
      	      $unhide = $db->sql_affectedrows($result) ? true : false;
      	      $db->sql_freeresult($result);
             }
         }
      }
    • Suchen nach:

      Code: Alles auswählen

      	'U_THANKS'			=> (!$give_thanks) ? append_sid("{$phpbb_root_path}thanks.$phpEx", 'p=' . $row['post_id'] . '&mode=thanks') : append_sid("{$phpbb_root_path}thanks.$phpEx", 'p=' . $row['post_id'] . '&mode=remove'),
      Ersetzen durch:

      Code: Alles auswählen

      	'U_THANKS'			=> (!$give_thanks) ? append_sid("{$phpbb_root_path}thanks.$phpEx", 'p=' . $row['post_id'] . '&t=' . $topic_id .'&mode=thanks') : append_sid("{$phpbb_root_path}thanks.$phpEx", 'p=' . $row['post_id'] . '&mode=remove'),
  • thanks.php öffnen.
Danke an dieser Stelle an den User HorribleLamer vom http://www.phpbb.de Forum für seine Unterstützung.



Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

[DEV] Re: Thank Post Mod (hide MOD compatible )

Beitrag von Mahony »

Hallo
Hier noch ein Bugfix zur Beschleunigung der 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.

Here is a fix to speed up the synchronization of Thanks (important in larger forums), if the forum posts were deleted and one in the ACP would like to thank synchronize.

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.

Set indices on the columns thanks_from and thanks_to in the table phpbb_thanks and post_thanked on the column in the table 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);
 



Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Gesperrt