Seite 1 von 1

Installation Problem: New topics need approval

Verfasst: 17.02.2015 22:03
von Karahgo
Hallo leute,

ich bin gerade dabei mein Forum anzupassen. Ich möchte gern das Themen erst durch den Admin/Mod freigegeben werden sollen, jedoch nicht die Beiträge.

Ich habe folgende MOD gefunden die ich gern installieren möchte.

https://www.phpbb.com/customise/db/mod/ ... _approval/

Leider gibt es bei der installation Probleme. Ich kann folgende Code Zeile in includes/functions_posting.php nicht finden!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Find
Tip: This may be a partial find and not the whole line.
Code:Select All
$post_approval = 0; <--- nicht auffindebar
}
Add after
Tip: Add these lines on a new blank line after the preceding line(s) to find.
Code:Select All
//Begin: New topics need approval
if ($mode == 'post' && !$auth->acl_get('f_topic_approve', $data['forum_id']) && !$auth->acl_get('m_approve', $data['forum_id']))
{
$post_approval = 0;
}
//Begin: New topics need approval
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Deshalb kann ich die installation nicht abschließen. Ich vermute mal das es damit zusammen hängt, dass es sich um eine alte MOD handelt und sich mittlerweile der Quellcode geändert hat.

Könnte mir jemand weiterhelfen diese MOD oder vergleichbare zu installieren/finden?

Danke im Voraus!

Re: Installation Problem: New topics need approval

Verfasst: 18.02.2015 04:45
von AYYILDIZLAR
Hallo,

Da hast du recht, die MOD ist ziemlich alt. Ich konnte aber trotzdem die besagte Stelle bei mir in der includes/funtions_posting.php finden. Wir haben ein stark "gemoddetes" Forum und dort befindet sich das von dir gesuchte $post_approval = 0; in der Zeile 1753. Wie gesagt, die includes/funtions_posting.php ist bei uns stark verändert worden, da halt viele MODs installiert sind, daher wird die Zeile für dich nicht mehr so ganz stimmen :wink:. Aber suche bitte erneut danach mal mit Notepad++(einem guten Editor) oder poste den Helfenden die besagte Datei ins Pastebin.

Grüße

Re: Installation Problem: New topics need approval

Verfasst: 18.02.2015 19:34
von Karahgo
Hi Ayyildizlar,

vielen Dank für deine schnelle Antwort. Ich habe die Datei bei Pastebin hochgeladen:

http://pastebin.com/z9HkBTQj

Gesucht habe auch mit Notepad++, es lässt sich einfach nicht finden!

Mir würde es auch reichen wenn man den Code so umschreibt das statt den Beiträgen nur die Themen freigegeben werden sollen.

Re: Installation Problem: New topics need approval

Verfasst: 18.02.2015 20:08
von AYYILDIZLAR
Welche phpBB Version benutzt ihr bei euch im Board?

Das ist aber nicht der Pastebin den ich verlinkt habe :wink:
AYYILDIZLAR hat geschrieben:poste den Helfenden die besagte Datei ins Pastebin

Re: Installation Problem: New topics need approval

Verfasst: 19.02.2015 06:29
von Karahgo
Ups, ich war noch nicht einloggt als ich auf deinen Link geklickt hatte. Deshalb hat er mir nichts angezeigt wo ich hochladen hätte können.

https://www.phpbb.de/support/pastebin.p ... iew&s=1489 Hier noch mal richtig.

Wir benutzen die 3.1.2 Version. In Deutsch SIE.

Re: Installation Problem: New topics need approval

Verfasst: 19.02.2015 07:29
von Pfiffy
Die MOD ist für die 3.0 Reihe von phpBB, du nutzt die 3.1 Reihe. Da funktionieren keine MODs, du musst nach EXTensions suchen!

Grücce
Pfiffy

Re: Installation Problem: New topics need approval

Verfasst: 19.02.2015 09:45
von AYYILDIZLAR
Karahgo hat geschrieben:Wir benutzen die 3.1.2 Version. In Deutsch SIE.
Das ist auch der Grund, warum dein Code etwas anders "gestrickt" ist. Und der Rest wurde dir ja jetzt bereits netterweise von Pfiffy beantwortet.

Grüße

Re: Installation Problem: New topics need approval

Verfasst: 20.02.2015 06:48
von Karahgo
Vielen Dank für den Hinweis! Ich werde mal mein Glück mit Extension versuchen. Wenn ich keins finde, versuche ich die funktion "Beträge freigeben" nur auf Themen bezogen umzucoden.

Wenn ich es geschafft habe, melde ich mich wieder.

Re: Installation Problem: New topics need approval

Verfasst: 20.02.2015 09:41
von AYYILDIZLAR
Wir warten gespannt auf deine Antwort :wink:

Re: Installation Problem: New topics need approval

Verfasst: 02.03.2015 23:06
von Karahgo
Nachdem ich nichts gefunden habe was mich weitergebracht hat, musste ich selber ran um mir was zurecht zu bauen! Es funktioniert soweit auch, es ist jedoch in der BETA Phase da es noch nicht ausgiebig getestet ist. Ich weis es ist umständlich gelöst, aber es erfüllt seinen Zweck.

Nun zur meiner Modifikation (Erstellt und getestet für Version 3.1.2.):

1. Man muss im Forum einstellen das Beiträge freigegeben werden müssen (WICHTIG).
2. Folgenden Code (siehe unten) in der Datei root/posting.php (bei mir ab Zeile 1409) oder zwischen (siehe unten) einfügen.
3. Ggf. Sprachdateien anpassen.

posting.php

Code: Alles auswählen

            // Handle delete mode...
            if ($request->is_set_post('delete') || $request->is_set_post('delete_permanent'))
            {
                $delete_reason = $request->variable('delete_reason', '', true);
                phpbb_handle_post_delete($forum_id, $topic_id, $post_id, $post_data, !$request->is_set_post('delete_permanent'), $delete_reason);
                return;
            }
            
// !!! ANFANG - MEINE MODIFIKATION !!!

//Fehler anzeigen
//error_reporting(-1);

//Fische alle Datensätze aus der DB wo Beiträge noch nicht freigegeben sind.
$sql_anfrage = 'SELECT * FROM phpbb_topics WHERE topic_posts_unapproved = 1';
$ergebnis = $db->sql_query($sql_anfrage);

//Lasse alle Daten von Posts (i.d.R. nur der aktuelle) die noch nicht freigegeben sind ausgeben.
while($spalte = $db->sql_fetchrow($ergebnis)) {

$topic_posts_approved = $spalte['topic_posts_approved'];

    //Prüfe ob ein Thema mehr als 1 freigegeben Betrag hat. (Themen zählen für phpBB auch als Beträge)
    if ($topic_posts_approved >= 1) {

    //Dient der Zuordnung des richtigen Beitrags
    $topic_id = $spalte['topic_id'];

    //Erhöhe Anworten Zähler + 1, da sonst nicht korrekt mitgezählt wird!
    $topic_posts_approved = $topic_posts_approved + 1; 

    $topic_last_poster_id = $spalte['topic_last_poster_id'];

    //Schalte das Thema frei, wo bereits mehr als 1 Beitrag existiert und erhöhe den Anworten counter + 1 (siehe Zeile darüber)
    $sql = 'UPDATE phpbb_topics SET topic_posts_unapproved = 0, topic_posts_approved = ' . $topic_posts_approved . ' WHERE topic_id = ' . $topic_id . '';
    $db->sql_query($sql);

    //User Posts manuell erhöhen.
    $sql = 'UPDATE phpbb_users SET user_posts = user_posts + 1 WHERE user_id = ' . $topic_last_poster_id . '';
    $db->sql_query($sql);

    //Forum Posts nicht freigegeben - 1, freigegeben + 1. (Zählt sonst nicht mit und man rutscht ins Minus)
    $sql = 'UPDATE phpbb_forums SET forum_posts_unapproved = forum_posts_unapproved     - 1, forum_posts_approved = forum_posts_approved + 1 WHERE forum_last_poster_id = ' . $topic_last_poster_id . '';
    $db->sql_query($sql);

    //Setze Antworten auf Themen auf Sichtbar.
    $sql = 'UPDATE phpbb_posts SET post_visibility = 1 ' . "WHERE post_subject LIKE 'Re:%'";
    $db->sql_query($sql);

    //Sorgt dafür das man keine Benachrichtigung sieht bei freigegeben Beiträgen.
    //$sql = 'UPDATE phpbb_notifications SET notification_read = 1 ' . "WHERE notification_read = 0 AND notification_data LIKE '%Re:%'";
    //$db->sql_query($sql);
    
    //Löscht die Nachricht aus Benachrichtigungen komplett raus.
    $sql = 'DELETE FROM phpbb_notifications WHERE notification_type_id = 12'; 
    $db->sql_query($sql);

    // Springe zum letzten Post.
    $redirect_url_mod = $redirect_url . '&p=' . $spalte['topic_last_post_id'] . '#p' . $spalte['topic_last_post_id']; 
    redirect($redirect_url_mod);    
    }
}
// !!! ENDE - MEINE MODIFIKATION !!!

            // Check the permissions for post approval.
            // Moderators must go through post approval like ordinary users.
            if ((!$auth->acl_get('f_noapprove', $data['forum_id']) && empty($data['force_approved_state'])) || (isset($data['force_approved_state']) && !$data['force_approved_state']))
            {