[Hack] Présentation obligatoire pour poster un sujet ou un message sur le forum
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
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."
Édité par Myster Le 02/06/2021 à 08h53
olivierb Membre non connecté
- Modérateur
- Voir le profil du membre olivierb
- Inscrit le : 07/02/2014
- Site internet
- Groupes :
- Equipe Assistance
Olivier
MickaelFR Membre non connecté
Booster Fusée
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
MickaelFR Membre non connecté
Booster Fusée
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
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
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
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 ( " )
Édité par MickaelFR Le 02/06/2021 à 15h00
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
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
MickaelFR Membre non connecté
Booster Fusée
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
Édité par babsolune Le 12/05/2021 à 16h16
MickaelFR Membre non connecté
Booster Fusée
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
De plus, ça ne bloque pas les messages, mais la création de sujet.
Je laisse le soin à @Myster d'expliquer la technique
Édité par MickaelFR Le 12/05/2021 à 16h19
Swan Membre non connecté
Booster Mortier
- Booster Mortier
- Voir le profil du membre Swan
- Inscrit le : 31/05/2013
- Site internet
MickaelFR Membre non connecté
Booster Fusée
- Booster Fusée
- Voir le profil du membre MickaelFR
- Inscrit le : 20/01/2014
- Site internet
- Groupes :
Swan :
Merci, je place en Favori
Tu dois d'abord mettre en 5.2 (ou v6.0) tes sites
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
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é
Édité par Myster Le 12/05/2021 à 19h07
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie