Forum

Créations de Modules [Hack] Présentation obligatoire pour poster un sujet ou un message sur le forum

Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 11/05/2021 à 21h41
Bonsoir,

Aujourd'hui je vous propose un petit "hack" qui permet d'obliger le membre à se présenter pour poster un sujet sur le forum.

Pour cela allez dans /forum/phpboost/ForumScheduledJobs.class.php et remplacer son contenu par

Code PHP :
 
<?php
/**
 * @copyright     © 2005-2019 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Loic ROUCHON <horn@phpboost.com>
 * @version       PHPBoost 5.2 - last update: 2014 12 22
 * @since       PHPBoost 3.0 - 2010 10 16
 */
class ForumScheduledJobs extends AbstractScheduledJobExtensionPoint
{
    const FORUM_PRESENTATION = 4;
    public function on_changepage()
    {
        if (Environment::get_running_module_name() === "forum") {
            if (!empty($_GET['new']) && $_GET['new'] === "topic" or !empty($_POST['valid']) && $_POST['valid']) {
                $post = PersistenceContext::get_querier()->count(PREFIX . 'forum_topics', 'WHERE idcat=:idcat and user_id=:user_id', array(
                    'idcat' => self::FORUM_PRESENTATION,
                    'user_id' => AppContext::get_current_user()->get_id()
                ));
                if (!$post && $_GET['id'] != self::FORUM_PRESENTATION) {
                    AppContext::get_response()->redirect(ForumUrlBuilder::home(), "Vous devez d'abord vous présenter dans la section adéquate, avant de pouvoir poster un sujet sur le forum.", MessageHelper::WARNING, 5);
                }
            }
        }
    }
    /**
     * {@inheritDoc}
     */
    public function on_changeday(Date $yesterday, Date $today)
    {
        //Suppression des marqueurs de vue du forum trop anciens.
        PersistenceContext::get_querier()->delete(
            PREFIX . 'forum_view',
            'WHERE timestamp < :limit',
            array('limit' => time() - (ForumConfig::load()->get_read_messages_storage_duration() * 3600 * 24))
        );
    }
}
 



Dans ce fichier, modifier simplement la constante FORUM_PRESENTATION = 3, changer le chiffre 3 par l'id du forum de présentation.

Par exemple si votre id de forum de présentation est 8 alors il faut que ça donne ceci

Code PHP :
 
    const FORUM_PRESENTATION = 8;
 



Lorsque quelqu'un qui ne s'est pas présenté, va vouloir poster un sujet ailleurs que dans présentation, il sera alors redirigé vers l'accueil du forum avec un message d'erreur "Vous devez d'abord vous présenter dans la section adéquate, avant de pouvoir poster un sujet sur le forum."
Edité par Myster Le 02/06/2021 à 08h53
   
olivierb Membre non connecté

Modérateur

Rang

Avatar

Equipe Assistance

Inscrit le : 07/02/2014 à 21h54

Messages: 1709

Le 11/05/2021 à 21h58
:party


Olivier
signboost
Site web    
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 07h32
:top Merci :)

(Non fonctionnel pour le moment sur mon site) Edité par MickaelFR Le 12/05/2021 à 07h40
Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 12/05/2021 à 09h09
Comment ça "non fonctionnel" ?
   
Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 12/05/2021 à 12h27
J'apporterais une correction tout à l'heure effectivement j'ai oublié une condition concernant la vérification du post de l'utilisateur courant.

   
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 14h03
Myster :
Comment ça "non fonctionnel" ?


Ben ça ne marche pas avec un nouvel utilisateur tout simplement :)
Je peux toujours créer un sujet.
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 15h38
Salut.

Après tests, ça fontionne très bien.
Merci @Myster pour ton correctif.

Pour ceux qui veulent que la redirection se fasse directement sur leur forum de présentation, voici comment faire (Code de Myster) :

Remplacer la ligne 21 par :

Code PHP :
AppContext::get_response()->redirect(ForumUrlBuilder::display_forum(self::FORUM_PRESENTATION, "presentation-carriere-des-membres"), "Vous devez d'abord vous présenter dans la section adéquate, avant de pouvoir poster un sujet sur le forum.", MessageHelper::WARNING, 10);


Il faut bien sûr modifié son URL.

Exemple pour mon site : presentation-carriere-des-membres
A personnaliser entre les crochets ( " ) Edité par MickaelFR Le 02/06/2021 à 15h00
Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 12/05/2021 à 15h40
Mais de rien

Citation :
ICI A INSERER VOTRE URL ! EXEMPLE ME CONCERNANT presentation-carriere-des-membres


Je dirais pas l'URL mais le slug plutôt, on appelle ça un slug :p :party
   
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 15h52
La réécriture des urls quoi :D
babsolune Membre non connecté

Modérateur

Rang

Avatar

Equipe Graphique

Inscrit le : 16/05/2008 à 12h52

Messages: 2650

Le 12/05/2021 à 16h14
je ne comprends pas comment est faite la vérification sur l'utilisateur, on récupère l'utilisateur courant mais comment on vérifie si c'est son premier post ?

Edité par babsolune Le 12/05/2021 à 16h16


ban_wind
Site web    
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 16h18
C'est pas forcément son premier message. J'ai essayé avec un utilisateur avec 4 messages (Tous effacés, mais vu que les stats phpboost ne modifient pas les messages effacés...), et ça fonctionne.
De plus, ça ne bloque pas les messages, mais la création de sujet.

Je laisse le soin à @Myster d'expliquer la technique :D Edité par MickaelFR Le 12/05/2021 à 16h19
Swan Membre non connecté

Booster Mortier

Rang

Avatar

Inscrit le : 31/05/2013 à 12h34

Messages: 793

Le 12/05/2021 à 17h54
Merci, je place en Favori ^^
Site web    
MickaelFR Membre non connecté

Booster Fusée

Rang

Avatar

Inscrit le : 20/01/2014 à 11h01

Messages: 1614

Le 12/05/2021 à 19h02
Swan :
Merci, je place en Favori ^^


Tu dois d'abord mettre en 5.2 (ou v6.0) tes sites :D :lol
Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 12/05/2021 à 19h05
babsolune :
je ne comprends pas comment est faite la vérification sur l'utilisateur, on récupère l'utilisateur courant mais comment on vérifie si c'est son premier post ?


On vérifie que l'utilisateur courant s'est présenter dans le forum adéquate. Si il a un sujet dans "Présentation des membres", alors il peut poster, sinon dans le cas contraire, on le redirige en indiquant un message d'erreur.

Mais je vais surement faire une mise à jour, pour interdire également les messages, là pour le moment ça interdit la création d'un sujet si l'utilisateur ne s'est pas présenté Edité par Myster Le 12/05/2021 à 19h07
   
Myster Membre non connecté

Booster Missile

Rang

Avatar

Inscrit le : 04/10/2010 à 19h18

Messages: 1072

Le 02/06/2021 à 08h52
Mise à jour: Maintenant on ne peut plus poster de message ni de sujet si nous ne sommes pas présenté sur le forum adéquate.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
Annonces