Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 26-02-2010 00:46:18

cramj
Membre

Autoriser l'édition du message pendant un laps de temps

Pour autoriser les utilisateurs à modifier leur message durant un certain temps après la création.
Fichiers affectés : viewtopic.php, admin_groups.php, edit.php
BDD affectée : OUI

Aperçu:
captureqt.png

Ouvrir viewtopic.php
Trouver :

                if ($pun_user['g_edit_posts'] == '1')

Remplacer par :

                if ($pun_user['g_edit_posts'] == '0' || (time() - $cur_post['posted']) < $pun_user['g_edit_posts'])

Ouvrir admin_groups.php
Trouver :

                                        <input type="radio" name="edit_posts" value="1"<?php if ($group['g_edit_posts'] == '1') echo ' checked="checked"' ?> tabindex="11" /> <strong>Oui</strong>   <input type="radio" name="edit_posts" value="0"<?php if ($group['g_edit_posts'] == '0') echo ' checked="checked"' ?> tabindex="12" /> <strong>Non</strong>
                                        <span>Autoriser les utilisateurs de ce groupe à modifier leurs propres messages.</span>

Remplacer par :

                                        <input type="text" size="5" maxlength="5" name="edit_posts" value="<?php echo $group['g_edit_posts'] ?>" tabindex="11" />
                                        <span>Nombre de secondes après que le message ait été envoyé pendant lesquelles les utilisateurs de ce groupe pourront le modifier. Mettre à 0 pour permettre la modification du message sans restriction dans le temps.</span>

Trouver :

    $edit_posts = isset($_POST['edit_posts']) ? intval($_POST['edit_posts']) : ($is_admin_group) ? '1' : '0';

Remplacer par :

    $edit_posts = isset($_POST['edit_posts']) ? intval($_POST['edit_posts']) : '1';

Ouvrir edit.php
Trouver :

$result = $db->query('SELECT f.id AS fid, f.forum_name, f.moderators, f.redirect_url, fp.post_replies, fp.post_topics, fp.post_polls, t.question, t.id AS tid, t.subject, t.posted, t.closed, p.poster, p.poster_id, p.message, p.hide_smilies FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'topics AS t ON t.id=p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND p.id='.$id) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());

Remplacer par :

$result = $db->query('SELECT f.id AS fid, f.forum_name, f.moderators, f.redirect_url, fp.post_replies, fp.post_topics, fp.post_polls, t.question, t.id AS tid, t.subject, t.posted, t.closed, p.poster, p.posted AS post_posted, p.poster_id, p.message, p.hide_smilies FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'topics AS t ON t.id=p.topic_id INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND p.id='.$id) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());

Trouver :

if (($pun_user['g_edit_posts'] == '0' ||

Remplacer par :

if ((($pun_user['g_edit_posts'] !== '0' && (time() - $cur_post['post_posted']) > $pun_user['g_edit_posts']) ||

Modif BdD
Ouvrir phpMyAdmin et exécuter dans une fenêtre SQL :

 ALTER TABLE `pun_groups` CHANGE `g_edit_posts` `g_edit_posts` SMALLINT( 5 ) NOT NULL DEFAULT '300'

J'ai fait un maximum de tests en espérant avoir corrigé tous les bugs.

Dernière modification par cramj (26-02-2010 19:27:43)

Hors ligne

#2 26-02-2010 08:13:05

Olivier2B
Membre

Re : Autoriser l'édition du message pendant un laps de temps

Bonjour cramj,

Sur le forum, il y a un certain temps, une personne proposée cette modif pour empêcher la modification d'un message après un certains temps.

Le principe est il le même ? merci à toi.

Dans viewtopic, chercher :

if ($pun_user['g_edit_posts'] == '1')

et remplacer par :

if ($pun_user['g_edit_posts'] == '1' && time() - $cur_post['posted'] < 60 * 15)

45 mn pour l'exemple

Hors ligne

#3 26-02-2010 09:45:46

fanf73
Wik-wiki

Re : Autoriser l'édition du message pendant un laps de temps

C'est à peu près pareil, mais l'intérêt de l'astuce de cramj est que tu peux paramétrer dans l'administration pour chaque groupe.

Par contre il faudrait que tu ajoutes un test dans le fichier edit.php, on peut encore modifier son message en entrant manuellement l'adresse de modification dans la barre d'adresse wink


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#4 26-02-2010 19:30:26

cramj
Membre

Re : Autoriser l'édition du message pendant un laps de temps

oups... j'avais oublié que j'avais modifié la BdD. Sans ça, on ne pourra mettre que 9 secondes huh autant dire que cette mod ne servirait à rien

j'ai édité le premier post

Hors ligne

Pied de page des forums