PHPBB-News sur PHPBB3

44 réponses - 31937 vues
Oups désolé comme déjà dit le code a été un peu fait à la va vite, si j'ai le temps je regarderai plus mieux (:mrgreen:) sauf si tu veux t'y coller J0k3r ;) dzavier, il le faudrait aussi mais pas le temps en ce moment, de plus je reste addict à la v2 :D m'enfin peut être qu'avec le temps je finirai par aimer la V3 ;)
@oyo Pas spécialement le temps non plus :p
Surtout qu'il faudrait déjà que j'installe la 3 et que je regarde un peu comment elle fonctionne ..
bonjour à tous, je suis tombé par hasard sur le forum (sur ce topic exactement).
le script que vous proposé me semple très intéressent.
je suis bas pas une bête sur le en php et encore mois le code phpbb.
je me suis parmi de retouché le code et je lui en effet une classe pour pouvoir l'utilise plus facilement. de plus je lui est apporté quel que correctif sur les requête effectué et sur le lien vers le profil de la personne qui a créé la news.
donc voici le code
**Code **
``<?php
define('IN_PHPBB', true);
define('IN_SITE', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include('./conf.php');
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewtopic', 0);
class news
{
private $forum_id;
private $con;
private $j;
private $bbcode;
function __construct($forum_id)
{
// Start session management
$this->forum_id = $forum_id;
$this->con = new GsSql();
//Initialisation de la variable "qui compte les news"

$this->j = 1;
}
function obtain_word_list()
{
global $config, $user, $db;
$sql = 'SELECT word, replacement FROM ' . WORDS_TABLE;
$result = $db->sql_query($sql);
$censors = array();
while ($row = $db->sql_fetchrow($result))
{
$censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i';
$censors['replace'][] = $row['replacement'];
}
$db->sql_freeresult($result);
return $censors;
}
function smiley_msg($text)
{
global $config, $phpbb_root_path;
return preg_replace('#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/(.*?) \/><!\-\- s\1 \-\->#', '<img src="' . $phpbb_root_path . $config['smilies_path'] . '/\2 />', $text);
}
function nl2br_msg($text)
{
$text = str_replace(array("\n", "\r"), array('<br clear="all"/>', "\n"), $text);
return $text;
}
function censor_msg($text)
{
if (!isset($censors) || !is_array($censors))
{
$censors = $this->obtain_word_list();
}
if (sizeof($censors))
{
return preg_replace($censors['match'], $censors['replace'], $text);
}
return $text;
}
function news_msg($nb_news=1)
{
$sql = "SELECT topic_id FROM `phpbb_topics`
WHERE forum_id =".$this->forum_id." order by topic_time desc";
$req = $this->con->exe($sql);
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
while($data1 = @mysql_fetch_array($req))
{
$sql = "SELECT post_text, p.post_subject, p.post_time, topic_first_poster_name, p.topic_id, t.topic_replies, bbcode_uid, bbcode_bitfield
FROM `phpbb_posts` p , `phpbb_topics` t
WHERE p.topic_id = t.topic_id AND p.topic_id = ".$data1[topic_id];
$req1 = $this->con->exe($sql);
$data = @mysql_fetch_array($req1);


$subject = $data['post_subject'];
$subject = $this->censor_msg($subject);
$subject = $this->smiley_msg($subject);
$subject = utf8_encode($subject);
//Affichage du titre
$tmp[title] = $subject;
$message = $data['post_text'];
$message = $this->censor_msg($message);
if ($data['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $data['bbcode_uid'], $data['bbcode_bitfield']);
}

/*
Pseudo Fix du parse du BBcode Quote...

$get_text = preg_match_all( '`<blockquote class="uncited"><div>(.*)`Us' , $message, $words);


if ($words)
{
foreach($words[0] as $val)
{
$message = $message.'</div></blockquote>';
}
}
*/
$message = $this->nl2br_msg($message);
$message = $this->smiley_msg($message);
$message = utf8_encode($message);
//Affichage du contenu de la news
$tmp[msg] = $message;


//Affichage de l'auteur
$tmp[user] ='<a href="'.$phpbb_root_path.'memberlist.php?mode=viewprofile&u='.$data['poster_id'].'">'.ucfirst(strtolower($data['topic_first_poster_name'])).'</a>';
setlocale(LC_TIME, "fr_FR.UTF-8");
$tmp[date] =strftime(" %A %d %B %Y, %T",$data[post_time]);
//Des commentaires
$tmp[com] ='<a href="'.$phpbb_root_path.'viewtopic.php?t='.$data['topic_id'].'"> ['.$data['topic_replies'].'] commentaire(s)</a>';


$return[] = $tmp;
//Si on atteints 5 news, on arr뵥
if($this->j >= $nb_news)
{
break;
}
$this->j++;
}
@mysql_free_result($req);
return $return;
}
}
?>``
exemple d'utilisation
**Code **
``<?php
include('./news.php');
$truc = new news(6);
$test = $truc->news_msg(5);
print_r($test);
?>``
mais j'ai toujours 3 ligne d'erreur dont je vois pas de ou peut-elle provenir
**Code **
``
[phpBB Debug] PHP Notice: in file /includes/session.php on line 885: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/httpdocs/news.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 885: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/httpdocs/news.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 885: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/httpdocs/news.php:1)
``
si il a quelqu'un qui connait comment remédié à se problème je serait très intéressé.
après quelque recherché le problème se produit sur cette ligne **:**
> $user->session_begin();
le problème apparessait déjà avant que je fasse les modification.
Tu dois avoir un truc tout bête qui s'affiche avant l'appel de cette fonction. Un espace en début de fichier suffit parfois à foutre le bordel
le problème peux être du de mon fichier est en utf8? le fichier news.php commence par <? puis un retour à la ligne puis define('IN_PHPBB', true);
et tout aller normal
:help: Bonjour à tous, je suis également très intéressé par ce script que j'utilisais sous pbpBB2, et malgré toutes mes bidouilles possibles, rien de concluant... Si quelqu'un à du nouveau, ce serait vraiment super.
Bonne journée à tous.
Bonjour, Je suis aussi super interressé par le script, il marche plutôt pas mal, j'ai corrigé quelques toutes petites erreurs :
**Code **
``
<?php
define('IN_PHPBB', true);
define('IN_SITE', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './monforum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewtopic', 0);
$host = 'localhost';
$user = 'root';
$pass = 'monpass';
$bdd = 'phpbb3'; // votre base de donnée
mysql_connect($host, $user, $pass);
mysql_select_db($bdd) or die('Impossible de se connecter');
function obtain_word_list()
{
global $config, $user, $db;
$sql = 'SELECT word, replacement FROM ' . WORDS_TABLE;
$result = $db->sql_query($sql);
$censors = array();
while ($row = $db->sql_fetchrow($result))
{
$censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i';
$censors['replace'][] = $row['replacement'];
}
$db->sql_freeresult($result);
return $censors;
}
function smiley_msg($text)
{
global $config, $phpbb_root_path;
return preg_replace('#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/(.*?) \/><!\-\- s\1 \-\->#', '<img src="' . $phpbb_root_path . $config['smilies_path'] . '/\2 />', $text);
}
function nl2br_msg($text)
{
$text = str_replace(array("\n", "\r"), array('<br clear="all"/>', "\n"), $text);
return $text;
}
function censor_msg($text)
{
if (!isset($censors) || !is_array($censors))
{
$censors = obtain_word_list();
}
if (sizeof($censors))
{
return preg_replace($censors['match'], $censors['replace'], $text);
}
return $text;
}
$table_prefix = 'phpbb_';
$sql = "SELECT p.*, t.topic_replies, t.topic_first_poster_name
FROM phpbb_posts p, phpbb_forums f, phpbb_topics t
WHERE f.forum_id=2
AND p.topic_id = t.topic_id
AND p.forum_id = f.forum_id
AND f.forum_id = t.forum_id
AND p.post_id = t.topic_first_post_id
ORDER BY topic_time DESC";
$req = mysql_query($sql);
//Initialisation de la variable "qui compte les news"

$j = 1;
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
while($data = @mysql_fetch_array($req))
{
$subject = $data['post_subject'];
$subject = censor_msg($subject);
$subject = smiley_msg($subject);

//Affichage du titre
echo '<h2>'.$subject.'</h2>';
$message = $data['post_text'];
$message = censor_msg($message);
if ($data['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $data['bbcode_uid'], $data['bbcode_bitfield']);
}


/*
Pseudo Fix du parse du BBcode Quote...

$get_text = preg_match_all( '`<blockquote class="uncited"><div>(.*)`Us' , $message, $words);


if ($words)
{
foreach($words[0] as $val)
{
$message = $message.'</div></blockquote>';
}
}
*/


$message = nl2br_msg($message);
$message = smiley_msg($message);

//Affichage du contenu de la news
echo '<p>'.$message.'</p>';


//Affichage de l'auteur
echo '<h3>Posté par <a href="'.$phpbb_root_path.'memberlist.php?mode=viewprofile&u='.$data['poster_id'].'">'.ucfirst(strtolower($data['topic_first_poster_name'])).'</a> le '.date('d/m/y', $data['post_time']).' - ';
//Des commentaires
echo '<a href="'.$phpbb_root_path.'viewtopic.php?t='.$data['topic_id'].'"> ['.$data['topic_replies'].'] commentaire(s)</a></h3>';


//Si on atteints 5 news, on arrête
if($j >= 5)
{
break;
}
$j++;
}
@mysql_free_result($req);
?>

``
il faut bien sûr modifer son adresse du forum, le nom de la base de donnée et son mot de passe et mettre la bonne valeur de l'ID du forum voulu dans la requête SQL. Il faut aussi faire les modifs à bbcode.php comme indiqué par Oyo.
J'ai aussi viré le utf8_decode(), inutile sur mon site mais qui peut servir à d'autres...
Par contre, j'ai un gros problème : le bbcode pour les URL ne marche pas (le lien n'apparait pas), alors que tous les autres marchent...
Si Oyo a une idée... :D
Merci beaucoup à Oyo et J0k3r en tout cas, pour l'aide apportée !
J'avoue que je suis pas expert de BB 3 (normal j'aime pas :mrgreen:) J'ai pas trop le temps de regarder mais passe sur phpbb-fr, Ern, touche pas mal au code de BB 3
Humm j'ai une petite question, j'utilise un script pour agrandir mes images dans une popup, j'ai donc besoin que le code html contenu dans les news soit interprété.... comment faire ? (comme visible ici http://ganoninc.free.fr/index2008.php , le code html s'affiche dans la news même et n'est donc pas interpréter)
Merci d'avance !

(44 résultats)


Catégories


Tags


Liens