Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
c'est en comettant des erreurs qu'on apprend un exemple j'ai installé la shout box tout est correct et tout maisntenant quand je clique sur un lien de topic j ai cette erreur
Parse error: syntax error, unexpected T_STRING in /home/downuniv/public_html/include/parser.php on line 845
voila le parser je comprends pas

Hors ligne
Bonjour,
Cette question n'a rien à voir avec le sujet de la discussion
Je vous ai déjà demandé de ne pas mettre des copies d'écran mais des copier/coller dans des balises code
Vous n'avez pas, une fois de plus, regardé ce qu'il y avait à la ligne en erreur (ou avant et après)
Donc, regardez ce qu'il y a au début des lignes 844 à 854
Si vous ne comprenez pas d'où vient l'erreur, ce n'est pas la peine de continuer dans cette voie
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
milles excuses !! je regarde je regarde !! avant dans le parser tout allait bien et là ......
je sais très bien que ça peut venir d'avant ou après
sinon pour le code je suis désolé en effet
Ê{
Ê$pattern[] = '%\['.$pun_bbcode[$i].'=([^\[]+?)\](.*?)\[/'.$punbbcode[$i].'\]%' or die('noooo');
Ê}
Êelse if($pun_bbcode3[$i]==1)
Ê{
Ê$pattern[] = '%\['.$pun_bbcode[$i].'\](.*?)\[/'.$pun_bbcode[$i].'\]%ms' or die('noooooo');
Ê}
Ê$replace[] = $pun_bbcode2[$i];
Ê$i++;ligne 844 à 854
Hors ligne
Bonjour,
D'où provient ce :
à chaque début de ligne ? Ce caractère n'a rien à faire là.
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
je n'en sais strictement rien je les ai retiré d'ailleurs maintenant j'ai cela et alors je pêche!
Fatal error: Call to undefined function do_clickable() in /home/forum/public_html/include/parser.php on line 102
<?php
/**
* Copyright (C) 2008-2012 FluxBB
* based on code by Rickard Andersson copyright (C) 2002-2008 PunBB
* License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
*/
// Make sure no one attempts to run this script "directly"
if (!defined('PUN'))
exit;
// Global variables
/* regular expression to match nested BBCode LIST tags
'%
\[list # match opening bracket and tag name of outermost LIST tag
(?:=([1a*]))?+ # optional attribute capture in group 1
\] # closing bracket of outermost opening LIST tag
( # capture contents of LIST tag in group 2
(?: # non capture group for either contents or whole nested LIST
[^\[]*+ # unroll the loop! consume everything up to next [ (normal *)
(?: # (See "Mastering Regular Expressions" chapter 6 for details)
(?! # negative lookahead ensures we are NOT on [LIST*] or [/list]
\[list # opening LIST tag
(?:=[1a*])?+ # with optional attribute
\] # closing bracket of opening LIST tag
| # or...
\[/list\] # a closing LIST tag
) # end negative lookahead assertion (we are not on a LIST tag)
\[ # match the [ which is NOT the start of LIST tag (special)
[^\[]*+ # consume everything up to next [ (normal *)
)*+ # finish up "unrolling the loop" technique (special (normal*))*
| # or...
(?R) # recursively match a whole nested LIST element
)* # as many times as necessary until deepest nested LIST tag grabbed
) # end capturing contents of LIST tag into group 2
\[/list\] # match outermost closing LIST tag
%iex' */
$re_list = '%\[list(?:=([1a*]))?+\]((?:[^\[]*+(?:(?!\[list(?:=[1a*])?+\]|\[/list\])\[[^\[]*+)*+|(?R))*)\[/list\]%ie';
// Here you can add additional smilies if you like (please note that you must escape single quote and backslash)
$smilies = array(
':)' => 'smile.png',
'=)' => 'smile.png',
':|' => 'neutral.png',
'=|' => 'neutral.png',
':(' => 'sad.png',
'=(' => 'sad.png',
':D' => 'big_smile.png',
'=D' => 'big_smile.png',
':o' => 'yikes.png',
':O' => 'yikes.png',
';)' => 'wink.png',
':/' => 'hmm.png',
':P' => 'tongue.png',
':p' => 'tongue.png',
':lol:' => 'lol.png',
':mad:' => 'mad.png',
':rolleyes:' => 'roll.png',
':cool:' => 'cool.png');
//
// Make sure all BBCodes are lower case and do a little cleanup
//
function preparse_bbcode($text, &$errors, $is_signature = false)
{
global $pun_config, $lang_common, $lang_post, $re_list;
if ($is_signature)
/* { */
global $lang_profile;
if (preg_match('%\[/?(?:quote|code|list|h)\b[^\]]*\]%i', $text))
$errors[] = $lang_profile['Signature quote/code/list/h'];
global $pun_user;
if (preg_match('%\[/?(?:video|left|right|center|justify)\b[^\]]*\]%i', $text))
{
if (file_exists(PUN_ROOT.'lang/'.$pun_user['language'].'/fluxtoolbar.php'))
require PUN_ROOT.'lang/'.$pun_user['language'].'/fluxtoolbar.php';
else
require PUN_ROOT.'lang/English/fluxtoolbar.php';
$errors[] = $lang_ftb['Signature balises'];
}
}
// If the message contains a code tag we have to split it up (text within shouldn't be touched)
if (strpos($text, '[code]') !== false && strpos($text, '[/code]') !== false)
list($inside, $text) = extract_blocks($text, '[code]', '[/code]');
// Tidy up lists
$temp = preg_replace($re_list, 'preparse_list_tag(\'$2\', \'$1\')', $text);
// If the regex failed
{
if ($temp === null)
$errors[] = $lang_common['BBCode list size error'];
else
$text = str_replace('*'."\0".']', '*]', $temp);
if ($pun_config['o_make_links'] == '1')
$text = do_clickable($text);
}
// If we split up the message before we have to concatenate it together again (code tags)
if (isset($inside))
{
$outside = explode("\1", $text);
$text = '';
$num_tokens = count($outside);
for ($i = 0; $i < $num_tokens; ++$i)
{
$text .= $outside[$i];
if (isset($inside[$i]))
$text .= '[code]'.$inside[$i].'[/code]';
}
unset($inside);
}
$temp_text = false;
if (empty($errors))
$temp_text = preparse_tags($text, $errors, $is_signature);
if ($temp_text !== false)
$text = $temp_text;
// Remove empty tags
while (($new_text = strip_empty_bbcode($text)) !== false)
{
if ($new_text != $text)
{
$text = $new_text;
if ($new_text == '')
{
$errors[] = $lang_post['Empty after strip'];
break;
}
}
else
break;
}
return pun_trim($text);
//
// Strip empty bbcode tags from some text
//
function strip_empty_bbcode($text)
{
// If the message contains a code tag we have to split it up (empty tags within are fine)
if (strpos($text, '[code]') !== false && strpos($text, '[/code]') !== false)
list($inside, $text) = extract_blocks($text, '[code]', '[/code]');
// Remove empty tags
while (($new_text = preg_replace('%\[(b|u|s|ins|del|em|i|h|colou?r|quote|img|url|email|list|topic|post|forum|user|acronym|q|sup|sub|left|right|center|justify|video)(?:\=[^\]]*)?\]\s*\[/\1\]%', '', $text)) !== NULL)
{
if ($new_text != $text)
$text = $new_text;
else
break;
}
}
// If we split up the message before we have to concatenate it together again (code tags)
if (isset($inside))
{
$parts = explode("\1", $text);
$text = '';
foreach ($parts as $i => $part)
{
$text .= $part;
if (isset($inside[$i]))
$text .= '[code]'.$inside[$i].'[/code]';
}
}
// Remove empty code tags
while (($new_text = preg_replace('%\[(code)\]\s*\[/\1\]%', '', $text)) !== NULL)
{
if ($new_text != $text)
$text = $new_text;
else
break;
}
return $text;
//
// Check the structure of bbcode tags and fix simple mistakes where possible
//
function preparse_tags($text, &$errors, $is_signature = false)
{
global $lang_common, $pun_config;
// Start off by making some arrays of bbcode tags and what we need to do with each one
// List of all the tags
$tags = array('quote', 'code', 'b', 'i', 'u', 's', 'ins', 'del', 'em', 'color', 'colour', 'url', 'email', 'img', 'list', '*', 'h', 'topic', 'post', 'forum', 'user', 'acronym', 'q', 'sup', 'sub', 'left', 'right', 'center', 'justify', 'video');
// List of tags that we need to check are open (You could not put b,i,u in here then illegal nesting like [b][i][/b][/i] would be allowed)
$tags_opened = $tags;
// and tags we need to check are closed (the same as above, added it just in case)
$tags_closed = $tags;
// Tags we can nest and the depth they can be nested to
$tags_nested = array('quote' => $pun_config['o_quote_depth'], 'list' => 5, '*' => 5);
// Tags to ignore the contents of completely (just code)
$tags_ignore = array('code');
// Block tags, block tags can only go within another block tag, they cannot be in a normal tag
$tags_block = array('quote', 'code', 'list', 'h', '*', 'left', 'right', 'center', 'justify');
// Inline tags, we do not allow new lines in these
$tags_inline = array('b', 'i', 'u', 's', 'ins', 'del', 'em', 'color', 'colour', 'h', 'topic', 'post', 'forum', 'user', 'acronym', 'q', 'sup', 'sub', 'video');
// Tags we trim interior space
$tags_trim = array('img', 'video');
// Tags we remove quotes from the argument
$tags_quotes = array('url', 'email', 'img', 'topic', 'post', 'forum', 'user', 'video');
// Tags we limit bbcode in
$tags_limit_bbcode = array(
'*' => array('b', 'i', 'u', 's', 'ins', 'del', 'em', 'color', 'colour', 'url', 'email', 'list', 'img', 'code', 'topic', 'post', 'forum', 'user', 'acronym', 'q', 'sup', 'sub', 'video'),
'list' => array('*'),
'url' => array('img', 'acronym', 'q', 'sup', 'sub'),
'email' => array('img', 'acronym', 'q', 'sup', 'sub'),
'topic' => array('img'),
'post' => array('img'),
'forum' => array('img'),
'user' => array('img'),
'img' => array(),
'h' => array('b', 'i', 'u', 's', 'ins', 'del', 'em', 'color', 'colour', 'url', 'email', 'topic', 'post', 'forum', 'user'),
'video' => array()
);
// Tags we can automatically fix bad nesting
$tags_fix = array('quote', 'b', 'i', 'u', 's', 'ins', 'del', 'em', 'color', 'colour', 'url', 'email', 'h', 'topic', 'post', 'forum', 'user');
$split_text = preg_split('%(\[[\*a-zA-Z0-9-/]*?(?:=.*?)?\])%', $text, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$open_tags = array('fluxbb-bbcode');
$open_args = array('');
$opened_tag = 0;
$new_text = '';
$current_ignore = '';
$current_nest = '';
$current_depth = array();
$limit_bbcode = $tags;
$count_ignored = array();
foreach ($split_text as $current)
{
if ($current == '')
continue;
// Are we dealing with a tag?
if (substr($current, 0, 1) != '[' || substr($current, -1, 1) != ']')
{
// It's not a bbcode tag so we put it on the end and continue
// If we are nested too deeply don't add to the end
if ($current_nest)
continue;
$current = str_replace("\r\n", "\n", $current);
$current = str_replace("\r", "\n", $current);
if (in_array($open_tags[$opened_tag], $tags_inline) && strpos($current, "\n") !== false)
{
// Deal with new lines
$split_current = preg_split('%(\n\n+)%', $current, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$current = '';
if (!pun_trim($split_current[0], "\n")) // The first part is a linebreak so we need to handle any open tags first
array_unshift($split_current, '');
for ($i = 1; $i < count($split_current); $i += 2)
{
$temp_opened = array();
$temp_opened_arg = array();
$temp = $split_current[$i - 1];
while (!empty($open_tags))
{
$temp_tag = array_pop($open_tags);
$temp_arg = array_pop($open_args);
if (in_array($temp_tag , $tags_inline))
{
array_push($temp_opened, $temp_tag);
array_push($temp_opened_arg, $temp_arg);
$temp .= '[/'.$temp_tag.']';
}
else
{
array_push($open_tags, $temp_tag);
array_push($open_args, $temp_arg);
break;
}
}
$current .= $temp.$split_current[$i];
$temp = '';
while (!empty($temp_opened))
{
$temp_tag = array_pop($temp_opened);
$temp_arg = array_pop($temp_opened_arg);
if (empty($temp_arg))
$temp .= '['.$temp_tag.']';
else
$temp .= '['.$temp_tag.'='.$temp_arg.']';
array_push($open_tags, $temp_tag);
array_push($open_args, $temp_arg);
}
$current .= $temp;
}
if (array_key_exists($i - 1, $split_current))
$current .= $split_current[$i - 1];
}
if (in_array($open_tags[$opened_tag], $tags_trim))
$new_text .= pun_trim($current);
else
$new_text .= $current;
continue;
}
// Get the name of the tag
$current_arg = '';
if (strpos($current, '/') === 1)
{
$current_tag = substr($current, 2, -1);
}
else if (strpos($current, '=') === false)
{
$current_tag = substr($current, 1, -1);
}
else
{
$current_tag = substr($current, 1, strpos($current, '=')-1);
$current_arg = substr($current, strpos($current, '=')+1, -1);
}
$current_tag = strtolower($current_tag);
// Is the tag defined?
if (!in_array($current_tag, $tags))
{
// It's not a bbcode tag so we put it on the end and continue
if (!$current_nest)
$new_text .= $current;
continue;
}
// We definitely have a bbcode tag
// Make the tag string lower case
if ($equalpos = strpos($current,'='))
{
// We have an argument for the tag which we don't want to make lowercase
if (strlen(substr($current, $equalpos)) == 2)
{
// Empty tag argument
$errors[] = sprintf($lang_common['BBCode error empty attribute'], $current_tag);
return false;
}
$current = strtolower(substr($current, 0, $equalpos)).substr($current, $equalpos);
}
else
$current = strtolower($current);
// This is if we are currently in a tag which escapes other bbcode such as code
// We keep a count of ignored bbcodes (code tags) so we can nest them, but
// only balanced sets of tags can be nested
if ($current_ignore)
{
// Increase the current ignored tags counter
if ('['.$current_ignore.']' == $current)
$count_ignored[$current_tag]++;
// Decrease the current ignored tags counter
if ('[/'.$current_ignore.']' == $current)
$count_ignored[$current_tag]--;
if ('[/'.$current_ignore.']' == $current && $count_ignored[$current_tag] == 0)
{
// We've finished the ignored section
$current = '[/'.$current_tag.']';
$current_ignore = '';
$count_ignored = array();
}
$new_text .= $current;
continue;
}
if ($current_nest)
{
// We are currently too deeply nested so lets see if we are closing the tag or not
if ($current_tag != $current_nest)
continue;
if (substr($current, 1, 1) == '/')
$current_depth[$current_nest]--;
else
$current_depth[$current_nest]++;
if ($current_depth[$current_nest] <= $tags_nested[$current_nest])
$current_nest = '';
continue;
}
// Check the current tag is allowed here
if (!in_array($current_tag, $limit_bbcode) && $current_tag != $open_tags[$opened_tag])
{
$errors[] = sprintf($lang_common['BBCode error invalid nesting'], $current_tag, $open_tags[$opened_tag]);
return false;
}
if (substr($current, 1, 1) == '/')
{
// This is if we are closing a tag
if ($opened_tag == 0 || !in_array($current_tag, $open_tags))
{
// We tried to close a tag which is not open
if (in_array($current_tag, $tags_opened))
{
$errors[] = sprintf($lang_common['BBCode error no opening tag'], $current_tag);
return false;
}
}
else
{
// Check nesting
while (true)
{
// Nesting is ok
if ($open_tags[$opened_tag] == $current_tag)
{
array_pop($open_tags);
array_pop($open_args);
$opened_tag--;
break;
}
// Nesting isn't ok, try to fix it
if (in_array($open_tags[$opened_tag], $tags_closed) && in_array($current_tag, $tags_closed))
{
if (in_array($current_tag, $open_tags))
{
$temp_opened = array();
$temp_opened_arg = array();
$temp = '';
while (!empty($open_tags))
{
$temp_tag = array_pop($open_tags);
$temp_arg = array_pop($open_args);
if (!in_array($temp_tag, $tags_fix))
{
// We couldn't fix nesting
$errors[] = sprintf($lang_common['BBCode error no closing tag'], array_pop($temp_opened));
return false;
}
array_push($temp_opened, $temp_tag);
array_push($temp_opened_arg, $temp_arg);
if ($temp_tag == $current_tag)
break;
else
$temp .= '[/'.$temp_tag.']';
}
$current = $temp.$current;
$temp = '';
array_pop($temp_opened);
array_pop($temp_opened_arg);
while (!empty($temp_opened))
{
$temp_tag = array_pop($temp_opened);
$temp_arg = array_pop($temp_opened_arg);
if (empty($temp_arg))
$temp .= '['.$temp_tag.']';
else
$temp .= '['.$temp_tag.'='.$temp_arg.']';
array_push($open_tags, $temp_tag);
array_push($open_args, $temp_arg);
}
$current .= $temp;
$opened_tag--;
break;
}
else
{
// We couldn't fix nesting
$errors[] = sprintf($lang_common['BBCode error no opening tag'], $current_tag);
return false;
}
}
else if (in_array($open_tags[$opened_tag], $tags_closed))
break;
else
{
array_pop($open_tags);
array_pop($open_args);
$opened_tag--;
}
}
}
if (in_array($current_tag, array_keys($tags_nested)))
{
if (isset($current_depth[$current_tag]))
$current_depth[$current_tag]--;
}
if (in_array($open_tags[$opened_tag], array_keys($tags_limit_bbcode)))
$limit_bbcode = $tags_limit_bbcode[$open_tags[$opened_tag]];
else
$limit_bbcode = $tags;
$new_text .= $current;
continue;
}
else
{
// We are opening a tag
if (in_array($current_tag, array_keys($tags_limit_bbcode)))
$limit_bbcode = $tags_limit_bbcode[$current_tag];
else
$limit_bbcode = $tags;
if (in_array($current_tag, $tags_block) && !in_array($open_tags[$opened_tag], $tags_block) && $opened_tag != 0)
{
// We tried to open a block tag within a non-block tag
$errors[] = sprintf($lang_common['BBCode error invalid nesting'], $current_tag, $open_tags[$opened_tag]);
return false;
}
if (in_array($current_tag, $tags_ignore))
{
// It's an ignore tag so we don't need to worry about what's inside it
$current_ignore = $current_tag;
$count_ignored[$current_tag] = 1;
$new_text .= $current;
continue;
}
// Deal with nested tags
if (in_array($current_tag, $open_tags) && !in_array($current_tag, array_keys($tags_nested)))
{
// We nested a tag we shouldn't
$errors[] = sprintf($lang_common['BBCode error invalid self-nesting'], $current_tag);
return false;
}
else if (in_array($current_tag, array_keys($tags_nested)))
{
// We are allowed to nest this tag
if (isset($current_depth[$current_tag]))
$current_depth[$current_tag]++;
else
$current_depth[$current_tag] = 1;
// See if we are nested too deep
if ($current_depth[$current_tag] > $tags_nested[$current_tag])
{
$current_nest = $current_tag;
continue;
}
}
// Remove quotes from arguments for certain tags
if (strpos($current, '=') !== false && in_array($current_tag, $tags_quotes))
{
$current = preg_replace('%\['.$current_tag.'=("|\'|)(.*?)\\1\]\s*%i', '['.$current_tag.'=$2]', $current);
}
if (in_array($current_tag, array_keys($tags_limit_bbcode)))
$limit_bbcode = $tags_limit_bbcode[$current_tag];
$open_tags[] = $current_tag;
$open_args[] = $current_arg;
$opened_tag++;
$new_text .= $current;
continue;
}
}
// Check we closed all the tags we needed to
foreach ($tags_closed as $check)
{
if (in_array($check, $open_tags))
{
// We left an important tag open
$errors[] = sprintf($lang_common['BBCode error no closing tag'], $check);
return false;
}
}
if ($current_ignore)
{
// We left an ignore tag open
$errors[] = sprintf($lang_common['BBCode error no closing tag'], $current_ignore);
return false;
}
return $new_text;
}
//
// Preparse the contents of [list] bbcode
//
function preparse_list_tag($content, $type = '*')
{
global $lang_common, $re_list;
if (strlen($type) != 1)
$type = '*';
if (strpos($content,'[list') !== false)
{
$content = preg_replace($re_list, 'preparse_list_tag(\'$2\', \'$1\')', $content);
}
$items = explode('[*]', str_replace('\"', '"', $content));
$content = '';
foreach ($items as $item)
{
if (pun_trim($item) != '')
$content .= '[*'."\0".']'.str_replace('[/*]', '', pun_trim($item)).'[/*'."\0".']'."\n";
}
return '[list='.$type.']'."\n".$content.'[/list]';
}
//
// Truncate URL if longer than 55 characters (add http:// or ftp:// if missing)
//
function handle_url_tag($url, $link = '', $bbcode = false)
{
$url = pun_trim($url);
// Deal with [url][img]http://example.com/test.png[/img][/url]
if (preg_match('%<img src=\\\\"(.*?)\\\\"%', $url, $matches))
return handle_url_tag($matches[1], $url, $bbcode);
$full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (strpos($url, '/') === 0) // Allow for relative URLs that start with a slash
$full_url = get_base_url(true).$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
if ($bbcode)
{
if ($full_url == $link)
return '[url]'.$link.'[/url]';
else
return '[url='.$full_url.']'.$link.'[/url]';
}
else
{
if ($link == '' || $link == $url)
{
$url = pun_htmlspecialchars_decode($url);
$link = utf8_strlen($url) > 55 ? utf8_substr($url, 0 , 39).' … '.utf8_substr($url, -10) : $url;
$link = pun_htmlspecialchars($link);
}
else
$link = stripslashes($link);
return '<a href="'.$full_url.'" target="_blank">'.$link.'</a>';
}
}
//
// Turns an URL from the [img] tag into an <img> tag or a <a href...> tag
//
function handle_img_tag($url, $is_signature = false, $alt = null)
{
global $lang_common, $pun_user;
if ($alt == null)
$alt = basename($url);
$img_tag = '<a href="'.$url.'"><'.$lang_common['Image link'].' - '.$alt.'></a>';
if ($is_signature && $pun_user['show_img_sig'] != '0')
$img_tag = '<img class="sigimage" src="'.$url.'" alt="'.$alt.'" />';
else if (!$is_signature && $pun_user['show_img'] != '0')
$img_tag = '<span class="postimg"><img src="'.$url.'" alt="'.$alt.'" /></span>';
return $img_tag;
}
//
// Parse the contents of [list] bbcode
//
function handle_list_tag($content, $type = '*')
{
global $re_list;
if (strlen($type) != 1)
$type = '*';
if (strpos($content,'[list') !== false)
{
$content = preg_replace($re_list, 'handle_list_tag(\'$2\', \'$1\')', $content);
}
$content = preg_replace('#\s*\[\*\](.*?)\[/\*\]\s*#s', '<li><p>$1</p></li>', pun_trim($content));
if ($type == '*')
$content = '<ul>'.$content.'</ul>';
else
if ($type == 'a')
$content = '<ol class="alpha">'.$content.'</ol>';
else
$content = '<ol class="decimal">'.$content.'</ol>';
return '</p>'.$content.'<p>';
}
//
// Convert BBCodes to their HTML equivalent
//
function do_bbcode($text, $is_signature = false)
{
global $lang_common, $pun_user, $pun_config, $re_list, $db;
if (strpos($text, '[quote') !== false)
{
$text = preg_replace('%\[quote\]\s*%', '</p><div class="quotebox"><blockquote><div><p>', $text);
$text = preg_replace('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%se', '"</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\']."</cite><blockquote><div><p>"', $text);
$text = preg_replace('%\s*\[\/quote\]%S', '</p></div></blockquote></div><p>', $text);
}
if (!$is_signature)
{
$pattern[] = $re_list;
$replace[] = 'handle_list_tag(\'$2\', \'$1\')';
}
$pattern[] = '%\[b\](.*?)\[/b\]%ms';
$pattern[] = '%\[i\](.*?)\[/i\]%ms';
$pattern[] = '%\[u\](.*?)\[/u\]%ms';
$pattern[] = '%\[s\](.*?)\[/s\]%ms';
$pattern[] = '%\[del\](.*?)\[/del\]%ms';
$pattern[] = '%\[ins\](.*?)\[/ins\]%ms';
$pattern[] = '%\[em\](.*?)\[/em\]%ms';
$pattern[] = '%\[colou?r=([a-zA-Z]{3,20}|\#[0-9a-fA-F]{6}|\#[0-9a-fA-F]{3})](.*?)\[/colou?r\]%ms';
$pattern[] = '%\[h\](.*?)\[/h\]%ms';
$pattern[] = '%\[acronym\](.*?)\[/acronym\]%ms';
$pattern[] = '%\[acronym=(.*?)\](.*?)\[/acronym\]%ms';
$pattern[] = '%\[q\](.*?)\[/q\]%ms';
$pattern[] = '%\[sup\](.*?)\[/sup\]%ms';
$pattern[] = '%\[sub\](.*?)\[/sub\]%ms';
$pattern[] = '%\[left\](.*?)\[/left\]%ms';
$pattern[] = '%\[right\](.*?)\[/right\]%ms';
$pattern[] = '%\[center\](.*?)\[/center\]%ms';
$pattern[] = '%\[justify\](.*?)\[/justify\]%ms';
$pattern[] = '%\[video\]([^\[<]*?)/video/([^_\[<]*?)_([^\[<]*?)\[/video\]%ms';
$pattern[] = '%\[video=([0-9]+),([0-9]+)\]([^\[<]*?)/video/([^_\[<]*?)_([^\[<]*?)\[/video\]%ms';
$pattern[] = '%\[video\]([^\[<]*?)/(v/|watch\?v=)([^\[<]*?)\[/video\]%ms';
$pattern[] = '%\[video=([0-9]+),([0-9]+)\]([^\[<]*?)/(v/|watch\?v=)([^\[<]*?)\[/video\]%ms';
$replace[] = '<strong>$1</strong>';
$replace[] = '<em>$1</em>';
$replace[] = '<span class="bbu">$1</span>';
$replace[] = '<span class="bbs">$1</span>';
$replace[] = '<del>$1</del>';
$replace[] = '<ins>$1</ins>';
$replace[] = '<em>$1</em>';
$replace[] = '<span style="color: $1">$2</span>';
$replace[] = '</p><h5>$1</h5><p>';
$replace[] = '<acronym>$1</acronym>';
$replace[] = '<acronym title="$1">$2</acronym>';
$replace[] = '<q>$1</q>';
$replace[] = '<sup>$1</sup>';
$replace[] = '<sub>$1</sub>';
$replace[] = '</p><p style="text-align: left">$1</p><p>';
$replace[] = '</p><p style="text-align: right">$1</p><p>';
$replace[] = '</p><p style="text-align: center">$1</p><p>';
$replace[] = '</p><p style="text-align: justify">$1</p><p>';
$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$2" width="480" height="384"><param name="movie" value="http://www.dailymotion.com/swf/video/$2" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
$replace[] = '<object type="application/x-shockwave-flash" data="http://www.dailymotion.com/swf/video/$4" width="$1" height="$2"><param name="movie" value="http://www.dailymotion.com/swf/video/$4" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$3" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$3" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
$replace[] = '<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/$5" width="$1" height="$2"><param name="movie" value="http://www.youtube.com/v/$5" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><p>Flash required</p></object>';
if (($is_signature && $pun_config['p_sig_img_tag'] == '1') || (!$is_signature && $pun_config['p_message_img_tag'] == '1'))
{
$pattern[] = '%\[img\]((ht|f)tps?://)([^\s<"]*?)\[/img\]%e';
$pattern[] = '%\[img=([^\[]*?)\]((ht|f)tps?://)([^\s<"]*?)\[/img\]%e';
if ($is_signature)
{
$replace[] = 'handle_img_tag(\'$1$3\', true)';
$replace[] = 'handle_img_tag(\'$2$4\', true, \'$1\')';
}
else
{
$replace[] = 'handle_img_tag(\'$1$3\', false)';
$replace[] = 'handle_img_tag(\'$2$4\', false, \'$1\')';
}
}
$pattern[] = '%\[url\]([^\[]*?)\[/url\]%e';
$pattern[] = '%\[url=([^\[]+?)\](.*?)\[/url\]%e';
$pattern[] = '%\[email\]([^\[]*?)\[/email\]%';
$pattern[] = '%\[email=([^\[]+?)\](.*?)\[/email\]%';
$pattern[] = '%\[topic\]([1-9]\d*)\[/topic\]%e';
$pattern[] = '%\[topic=([1-9]\d*)\](.*?)\[/topic\]%e';
$pattern[] = '%\[post\]([1-9]\d*)\[/post\]%e';
$pattern[] = '%\[post=([1-9]\d*)\](.*?)\[/post\]%e';
$pattern[] = '%\[forum\]([1-9]\d*)\[/forum\]%e';
$pattern[] = '%\[forum=([1-9]\d*)\](.*?)\[/forum\]%e';
$pattern[] = '%\[user\]([1-9]\d*)\[/user\]%e';
$pattern[] = '%\[user=([1-9]\d*)\](.*?)\[/user\]%e';
$replace[] = 'handle_url_tag(\'$1\')';
$replace[] = 'handle_url_tag(\'$1\', \'$2\')';
$replace[] = '<a href="mailto:$1">$1</a>';
$replace[] = '<a href="mailto:$1">$2</a>';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=$1#p$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=$1#p$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\', \'$2\')';
// included for custom_bbcode_v1.1.6
include(FORUM_CACHE_DIR.'cache_bbcode.php');
$i = 2;
while(isset($pun_bbcode3[$i]))
if($pun_bbcode3[$i]==2)
$pattern[] = '%\['.$pun_bbcode[$i].'=([^\[]+?)\](.*?)\[/'.$punbbcode[$i].'\]%' or die('noooo');
else if($pun_bbcode3[$i]==1)
$pattern[] = '%\['.$pun_bbcode[$i].'\](.*?)\[/'.$pun_bbcode[$i].'\]%ms' or die('noooooo');
$replace[] = $pun_bbcode2[$i];
$i++;
{
// included for custom_bbcode_v1.1.6
// This thing takes a while! :)
$text = preg_replace($pattern, $replace, $text);
return $text;
}
//
// Make hyperlinks clickable
//
function do_clickable($text)
{
$text = ' '.$text;
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(https?|ftp|news){1}://([\p{L}\p{N}\-]+\.([\p{L}\p{N}\-]+\.)*[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%uie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5://$6\', \'$5://$6\', true).stripslashes(\'$4$10$11$12\')', $text);
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(www|ftp)\.(([\p{L}\p{N}\-]+\.)*[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%uie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5.$6\', \'$5.$6\', true).stripslashes(\'$4$10$11$12\')', $text);
return substr($text, 1);
}
//
// Convert a series of smilies to images
//
function do_smilies($text)
{
global $pun_config, $smilies;
$text = ' '.$text.' ';
foreach ($smilies as $smiley_text => $smiley_img)
{
if (strpos($text, $smiley_text) !== false)
$text = ucp_preg_replace('%(?<=[>\s])'.preg_quote($smiley_text, '%').'(?=[^\p{L}\p{N}])%um', '<img src="'.pun_htmlspecialchars(get_base_url(true).'/img/smilies/'.$smiley_img).'" width="15" height="15" alt="'.substr($smiley_img, 0, strrpos($smiley_img, '.')).'" />', $text);
}
return substr($text, 1, -1);
}
//
// Parse message text
//
function parse_message($text, $hide_smilies)
{
global $pun_config, $lang_common, $pun_user;
if ($pun_config['o_censoring'] == '1')
$text = censor_words($text);
// Convert applicable characters to HTML entities
$text = pun_htmlspecialchars($text);
// If the message contains a code tag we have to split it up (text within shouldn't be touched)
if (strpos($text, '[code]') !== false && strpos($text, '[/code]') !== false)
list($inside, $text) = extract_blocks($text, '[code]', '[/code]');
if ($pun_config['p_message_bbcode'] == '1' && strpos($text, '[') !== false && strpos($text, ']') !== false)
$text = do_bbcode($text);
if ($pun_config['o_smilies'] == '1' && $pun_user['show_smilies'] == '1' && $hide_smilies == '0')
$text = do_smilies($text);
}
// Deal with newlines, tabs and multiple spaces
$pattern = array("\n", "\t", ' ', ' ');
$replace = array('<br />', '    ', '  ', '  ');
$text = str_replace($pattern, $replace, $text);
// If we split up the message before we have to concatenate it together again (code tags)
if (isset($inside))
{
$parts = explode("\1", $text);
$text = '';
foreach ($parts as $i => $part)
{
$text .= $part;
if (isset($inside[$i]))
{
$num_lines = (substr_count($inside[$i], "\n"));
$text .= '</p><div class="codebox"><pre'.(($num_lines > 28) ? ' class="vscroll"' : '').'><code>'.pun_trim($inside[$i], "\n\r").'</code></pre></div><p>';
}
}
}
return clean_paragraphs($text);
}
//
// Clean up paragraphs and line breaks
//
function clean_paragraphs($text)
{
// Add paragraph tag around post, but make sure there are no empty paragraphs
$text = '<p>'.$text.'</p>';
// Replace any breaks next to paragraphs so our replace below catches them
$text = preg_replace('%(</?p>)(?:\s*?<br />){1,2}%i', '$1', $text);
$text = preg_replace('%(?:<br />\s*?){1,2}(</?p>)%i', '$1', $text);
// Remove any empty paragraph tags (inserted via quotes/lists/code/etc) which should be stripped
$text = str_replace('<p></p>', '', $text);
$text = preg_replace('%<br />\s*?<br />%i', '</p><p>', $text);
$text = str_replace('<p><br />', '<br /><p>', $text);
$text = str_replace('<br /></p>', '</p><br />', $text);
$text = str_replace('<p></p>', '<br /><br />', $text);
return $text;
}
//
// Parse signature text
//
function parse_signature($text)
{
global $pun_config, $lang_common, $pun_user;
if ($pun_config['o_censoring'] == '1')
$text = censor_words($text);
// Convert applicable characters to HTML entities
$text = pun_htmlspecialchars($text);
if ($pun_config['p_sig_bbcode'] == '1' && strpos($text, '[') !== false && strpos($text, ']') !== false)
$text = do_bbcode($text, true);
if ($pun_config['o_smilies_sig'] == '1' && $pun_user['show_smilies'] == '1')
$text = do_smilies($text);
}
// Deal with newlines, tabs and multiple spaces
$pattern = array("\n", "\t", ' ', ' ');
$replace = array('<br />', '    ', '  ', '  ');
$text = str_replace($pattern, $replace, $text);
return clean_paragraphs($text)
?>Hors ligne
Bonjour,
C'est une accolade fermée au mauvais endroit
Après un coup d'oeil rapide, je dirai que c'est la ligne après le premier if ($is_signature) qui est
/* { */qui devrait plutôt être ainsi:
{Bouh !
StarShip Renaissance
Hors ligne
C'est bon j'ai réussi à trouverPascL merci quand même par contre maintenant j'ai un problème d'affichage de mes Topics..
En effet, dès que j'arrive sur un Topic le topic ne se voit pas , il existe pourtant mais il ne s'affiche pas...

Hors ligne
Bonjour,
Avant de continuer plus loin, il est absolument impératif de savoir pourquoi vous vous retrouvez avec des espaces surnuméraires, des caractères ajoutés au début de plusieurs lignes (Ê), des accolades mises en commentaire /* { */.
Il s'avère que tous vos problèmes proviennent des défauts susmentionnés et je refuse de vous aider plus avant, tant que vous n'aurez pas identifié le coupable et remédié au problème.
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Comment voulez-vous que je le sache ? si je le savais je vous le dirais bien je pense j'essai d'avancer tant bien que mal
et j'attends toujours une réponse à mon problème d'affichage !!! il y a bien un moyen de remettre mes posts normalement non?
Hors ligne
Si vous voulez je vous donnes accès à mon Forum pour regarder et constater par vous-même ce n'est pas un problème
en plus ça vous montrera l'avancée du site en question!
qu' en pensez-vous?
Hors ligne
Bonjour,
Soit l'url du forum est donnée ici - même si le site et/ou le forum ne sont pas terminés - afin que tout un chacun puisse vous aider, soit elle est privée et le restera. Comme pour les autres forums où je donne de l'aide, je n'assure aucune prestation privée.
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
edit
Dernière modification par aromate (28-11-2012 19:35:38)
Hors ligne
Bonjour,
Pour être certain que les messages existent bien dans la BDD et ne sont pas « vérolés », on va afficher, pour chaque message et uniquement pour l'administrateur du forum, les id dans la table post de la BDD des messages qui devraient être affichés.
Dans le fichier viewtopic.php
chercher (ligne 298)
// Generation post action array (quote, edit, delete etc.)après, ajouter :
$oto_num_post =""; //modif oto
chercher (lignes 322/323):
$post_actions[] = '<li class="postedit"><span><a href="edit.php?id='.$cur_post['id'].'">'.$lang_topic['Edit'].'</a></span></li>';
$post_actions[] = '<li class="postquote"><span><a href="post.php?tid='.$id.'&qid='.$cur_post['id'].'">'.$lang_topic['Quote'].'</a></span></li>';après, ajouter :
$oto_num_post = " - Post id = ".$cur_post['id']; //modif oto affichage id_post uniquement pour adminchercher (ligne 343)
<h2><span><span class="conr">#<?php echo ($start_from + $post_count) ?></span> <a href="viewtopic.php?pid=<?php echo $cur_post['id'].'#p'.$cur_post['id'] ?>"><?php echo format_time($cur_post['posted']) ?></a></span></h2>à remplacer par :
<h2><span><span class="conr">#<?php echo ($start_from + $post_count).$oto_num_post ?></span> <a href="viewtopic.php?pid=<?php echo $cur_post['id'].'#p'.$cur_post['id'] ?>"><?php echo format_time($cur_post['posted']) ?></a></span></h2>
Maintenant, uniquement pour un admin, il va s'afficher en plus du numéro de message dans la page, le numéro id dudit message dans la base de données.
Il faut noter les id des messages qui ne sont pas vus et vérifier dans la table post qu'ils existent bien.
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Voilà j'ai le numéro ID
http://www.down-univers.net/viewtopic.php?id=31151 ==> 31151
je suis dans la bdd table posts

je fais comment pour rechercher directement le post avec l'id 31151?
apparemment les autres s'affichent
Hors ligne
Bonjour,
Lorsque vous affichez la table post dans PhpMyAdmin, dans la fenêtre Afficher, en haut, il y a, par exemple :
SELECT *
FROM `fluxbb_posts`
ORDER BY `fluxbb_posts`.`id` DESC
LIMIT 0 , 30Vous validez Modifier (en bas de la petite fenêtre du haut) et dans la fenêtre qui s'affiche, vous modifiez la requête en :
SELECT * FROM `fluxbb_posts` WHERE id = 31151puis bouton Exécuter.
Nota : Le préfixe de mes tables est 'fluxbb_', a priori, vous n'en avez pas, donc `posts` et non pas `fluxbb_posts`
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne


ca correspond bien !
Dernière modification par aromate (28-11-2012 21:06:02)
Hors ligne
J'ai tout désinstallé juste garder les avatars les images et le dossier style !! j'ai gardé le config.php pour garder mes données.
On va commencer par le départ alors j'ai un tout petit soucis mes Topics s'affichent, cependant ils ne sont pas centrés et ne prennent pas en considération les hide pour les liens une idée?
Hors ligne