News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

SMF Shoutbox & sboxDB.php

Started by diavlos, July 27, 2007, 10:49:48 AM

Previous topic - Next topic

diavlos

Μια μικρή βοήθεια (αν κάποιος ξέρει!)

Μόλις εγκατέστησα το SMF Shoutbox  «έκανα όλες τις απαραίτητες αλλαγές» αλλά μου παρουσιάζετε ένα πρόβλημα σχετικά με τα smiles του Shoutbox . αν έχω καταλάβει καλά η «αντιστοιχία» βρίσκετε στο αρχείο      sboxDB.php   

Στο συγκεκριμένο αρχείο «πρέπει» να βρω το:
// handle spacial characters $content=addslashes($content);

Και να το αντικαταστήσω με αυτό:

// handle special characters $content=addslashes($content); // enquote html and script code to avoid html/javascript injection $content = htmlentities($content, ENT_QUOTES);

Όμως στο αρχείο sboxDB.php  δεν υπάρχει πουθενά το // handle spacial characters

Μήπως κάποιος από εσάς μπορεί να βρει τι ακριβώς πρέπει να είναι «γραμμένο» στο sboxDB.php 

Ευχαριστώ
diavlos


Nefeli

Κοίτα τη γραμμή 180 του αρχείου.
Αν στην αναζήτηση βάζεις spacial και όχι special είναι επόμενο να μη το βρίσκει. :)

Παρεμπιπτόντως και εγώ θέλω να κάνω αλλαγές στο κατά τα άλλα καταπληκτικό αυτό σουτμποξ.

Μήπως ξέρεις πως να το βάλω σε block και όχι στη κεντρική; Θα με γλύτωνες από το ψάξιμο. :)

Nefeli

Quote from: Nefeli on July 27, 2007, 11:51:24 AM
Μήπως ξέρεις πως να το βάλω σε block και όχι στη κεντρική; Θα με γλύτωνες από το ψάξιμο. :)

Το πέτυχα και δεν χρειάστηκε να ψάξω και πολύ!  :)
πρόσθεσα το κώδικα
// display shoutbox
  if (function_exists('sbox')) sbox();

σε ένα php block ....

Μένει μόνο να ρυθμίσω το πλάτος  :)

diavlos

<?
require("../SSI.php");

if (!defined('SMF'))
die('Hacking attempt...');

// global variables
global $db_connection, $context, $settings, $txt, $user_info, $modSettings, $db_prefix;

// used in test scenario
//@mysql_select_db($db_name, $db_connection);

//display html header
echo '<html xmlns="http://www.w3.org/1999/xhtml"', $context['right_to_left'] ? ' dir="rtl"' : '', '>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />
<meta name="description" content="Shoutbox" />
<meta name="keywords" content="Shoutbox" />
<title>Shoutbox</title>
<meta http-equiv="refresh" content="'.$modSettings['sbox_RefreshTime'].';URL=sboxDB.php">
<link rel="stylesheet" type="text/css" href="', $settings['theme_url'], '/style.css?rc2" />
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function killYesNo()
{
return confirm("'.$txt['sbox_KillShout'].'");

}
// ]]></script>

<style type="text/css"><!-- // --><![CDATA[
<!--
.Kill
{
color: #ff0000;
}
.OddLine
{
font-family: '.$modSettings['sbox_FontFamily1'].';
font-style: normal;
font-size: '.$modSettings['sbox_TextSize1'].';
font-weight: normal;
color: '.$modSettings['sbox_TextColor1'].';
}
.EvenLine
{
font-family: '.$modSettings['sbox_FontFamily2'].';
font-style: normal;
font-size: '.$modSettings['sbox_TextSize2'].';
font-weight: normal;
color: '.$modSettings['sbox_TextColor2'].';
}
body
{
padding: 0px 0px 0px 0px;
background-color: '.$modSettings['sbox_BackgroundColor'].';
}
a:link
{
color: #ff0000;
text-decoration: none;
}
//-->
// ]]></style>';


switch ($_REQUEST['action'])
{

case "write":
if  ((!$context['user']['is_guest']) || ($modSettings['sbox_GuestAllowed'] == "1"))
{
// empty messages are not allowed
$content=$_REQUEST['sboxText'];
if(chop($content."") != "")
{
// get actual weekday
$days = array($txt['sbox_Sunday'],$txt['sbox_Monday'],$txt['sbox_Tuesday'],$txt['sbox_Wednesday'],$txt['sbox_Thurday'],$txt['sbox_Friday'],$txt['sbox_Saturday']);
$day=$days[date("w")]; // weekday
$date=$day." | ". date("G:i"); // time

// insert shout message into database
$sql = "insert into ".$db_prefix."sbox_content (name,content,time) values ('".$user_info['username']."','".$content."','$date')";
db_query($sql,__FILE__,__LINE__);

// delete old shout messages (get id of last shouting and delete all shoutings as defined in settings
$result = db_query("select id from ".$db_prefix."sbox_content where name='".$user_info['username']."' and content='".$content."' and time='$date'",__FILE__,__LINE__);
$rows = mysql_fetch_assoc($result) ;
$sql = "delete from ".$db_prefix."sbox_content where id < '".($rows["id"]-$modSettings['sbox_MaxLines'])."'";
db_query($sql,__FILE__,__LINE__);
}
}
break;
case "kill":
if  ($context['user']['is_admin'])
{
$id = "".$_REQUEST['kill'];
if ($id != "")
{
$sql = "delete from ".$db_prefix."sbox_content where id=".$id."";
db_query($sql,__FILE__,__LINE__);
}
}
break;
}

// close header and open body
echo '
</head>
<body>';

// get smilie path
$themedir = $settings['default_theme_url']; // smf theme path
$imgdir = $themedir."/images/"; // smilie path

// get shout messages out of database
$result = db_query("select * from ".$db_prefix."sbox_content order by id desc, time asc limit ".$modSettings['sbox_MaxLines'],__FILE__,__LINE__);
if(mysql_num_rows($result))
{
$count=0; // counter to distinguish font color
while($row = mysql_fetch_assoc($result))
{
$count = $count + 1; // increase counter
$name = $row["name"]; // user name
$date = $row["time"]; // shouting date and time
$content = stripslashes($row['content']); // shouting content

// replace smilie code with path to smilie image
$content = str_replace ($txt['sbox_smilie01_code'], '<img src="'.$imgdir.$txt['sbox_smilie01_file'].'" alt="'.$txt['sbox_smilie01_text'].'" title="'.$txt['sbox_smilie01_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie02_code'], '<img src="'.$imgdir.$txt['sbox_smilie02_file'].'" alt="'.$txt['sbox_smilie02_text'].'" title="'.$txt['sbox_smilie02_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie03_code'], '<img src="'.$imgdir.$txt['sbox_smilie03_file'].'" alt="'.$txt['sbox_smilie03_text'].'" title="'.$txt['sbox_smilie03_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie04_code'], '<img src="'.$imgdir.$txt['sbox_smilie04_file'].'" alt="'.$txt['sbox_smilie04_text'].'" title="'.$txt['sbox_smilie04_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie05_code'], '<img src="'.$imgdir.$txt['sbox_smilie05_file'].'" alt="'.$txt['sbox_smilie05_text'].'" title="'.$txt['sbox_smilie05_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie06_code'], '<img src="'.$imgdir.$txt['sbox_smilie06_file'].'" alt="'.$txt['sbox_smilie06_text'].'" title="'.$txt['sbox_smilie06_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie07_code'], '<img src="'.$imgdir.$txt['sbox_smilie07_file'].'" alt="'.$txt['sbox_smilie07_text'].'" title="'.$txt['sbox_smilie07_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie08_code'], '<img src="'.$imgdir.$txt['sbox_smilie08_file'].'" alt="'.$txt['sbox_smilie08_text'].'" title="'.$txt['sbox_smilie08_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie09_code'], '<img src="'.$imgdir.$txt['sbox_smilie09_file'].'" alt="'.$txt['sbox_smilie09_text'].'" title="'.$txt['sbox_smilie09_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie10_code'], '<img src="'.$imgdir.$txt['sbox_smilie10_file'].'" alt="'.$txt['sbox_smilie10_text'].'" title="'.$txt['sbox_smilie10_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie11_code'], '<img src="'.$imgdir.$txt['sbox_smilie11_file'].'" alt="'.$txt['sbox_smilie11_text'].'" title="'.$txt['sbox_smilie11_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie12_code'], '<img src="'.$imgdir.$txt['sbox_smilie12_file'].'" alt="'.$txt['sbox_smilie12_text'].'" title="'.$txt['sbox_smilie12_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie13_code'], '<img src="'.$imgdir.$txt['sbox_smilie13_file'].'" alt="'.$txt['sbox_smilie13_text'].'" title="'.$txt['sbox_smilie13_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie14_code'], '<img src="'.$imgdir.$txt['sbox_smilie14_file'].'" alt="'.$txt['sbox_smilie14_text'].'" title="'.$txt['sbox_smilie14_text'].'" border="0" />', $content);
$content = str_replace ($txt['sbox_smilie15_code'], '<img src="'.$imgdir.$txt['sbox_smilie15_file'].'" alt="'.$txt['sbox_smilie15_text'].'" title="'.$txt['sbox_smilie15_text'].'" border="0" />', $content);

// display shouting message and use a different color each second row
if ($count % 2)
echo '
<div class="OddLine">';
else
echo '
<div class="EvenLine">';
if ($context['user']['is_admin'])
echo '<a title="'.$txt['sbox_KillShout'].'" class="Kill" onclick="return killYesNo();" href="sboxDB.php?action=kill&kill='.$row['id'].'">[X]</a>';

echo '[&nbsp;'.$date.'&nbsp;]&nbsp;<b>&lt;'.$name.'&gt;</b>&nbsp;'.$content.'</div>';
}

    echo '
</body>
</html>';
}
?>



Αυτός είναι ο κώδικας στο sboxDB.php

Έψαξα αλλά δεν βρήκα πουθενά το
// handle spacial characters $content=addslashes($content);
Έτσι ώστε να το αντικαταστήσω

Nefeli

Κάποιο λάθος κάνεις.
Το αρχείο sboxDB.php είναι το παρακάτω

<?php
header
('Pragma: no-cache');
header('Expires: 0');
header('Cache-control: none');

require(
"../SSI.php");

if (!
defined('SMF'))
  die(
'Hacking attempt...');

loadLanguage('sbox');

/***[ BEGIN CONFIGURATION ]***************************************************/

$sbox_HistoryFile $boarddir '/sbox.history.html';

$sbox_NickPrefix '&lt;';       // this won't be linked to the profile page
$sbox_NickInnerPrefix '<b>';   // this will be linked to the profile page, use formatting tags (<B>) here
$sbox_NickInnerSuffix '</b>';  // so that they are applied inside the <A>, otherwise they won't work
$sbox_NickSuffix '&gt;';

$sbox_DatePrefix '[';
$sbox_DateSeparator '&nbsp;';    // separates weekday from time
$sbox_DateSuffix ']';

/***[ END CONFIGURATION ]*****************************************************/

// BEGIN: BORROWED FROM http://de2.php.net/manual/en/function.flock.php
/*
 * I hope this is usefull. 
 * If mkdir() is atomic, 
 * then we do not need to worry about race conditions while trying to make the lockDir,
 * unless of course we're writing to NFS, for which this function will be useless.
 * so thats why i pulled out the usleep(rand()) piece from the last version
 *
 * Again, its important to tailor some of the parameters to ones indivdual usage
 * I set the default $timeLimit to 3/10th's of a second (maximum time allowed to achieve a lock), 
 * but if you're writing some extrememly large files, and/or your server is very slow, you may need to increase it.
 * Obviously, the $staleAge of the lock directory will be important to consider as well if the writing operations might take a while.
 * My defaults are extrememly general and you're encouraged to set your own
 *
 * $timeLimit is in microseconds
 * $staleAge is in seconds
 */

function microtime_float() {
   list(
$usec$sec) = explode(' 'microtime());
   return ((float)
$usec + (float)$sec);
}

function 
locked_filewrite($filename$data$timeLimit 300000$staleAge 5) {
   
ignore_user_abort(1);
   
$lockDir $filename '.lock';

   if (
is_dir($lockDir)) {
     if ((
time() - filemtime($lockDir)) > $staleAge) {
       
rmdir($lockDir);
     }
   }

   
$locked = @mkdir($lockDir);

   if (
$locked === false) {
     
$timeStart microtime_float();
     do {
       if ((
microtime_float() - $timeStart) > $timeLimit) break;
       
$locked = @mkdir($lockDir);
     } while (
$locked === false);
   }

   
$success false;

   if (
$locked === true) {
     
$fp = @fopen($filename'at');
     if (@
fwrite($fp$data)) $success true;
     @
fclose($fp);
     
rmdir($lockDir);
   }

   
ignore_user_abort(0);
   return 
$success;
}
// END: BORROWED FROM http://de2.php.net/manual/en/function.flock.php

function missinghtmlentities($text) {
  global 
$context;
  
// entitify missing characters, ignore entities already there (Unicode / UTF8) (hopefully in &#38;#123;-notation)
  
$split preg_split('/(&#38;#[\d]+;)/'$text, -1PREG_SPLIT_DELIM_CAPTURE);
  
$result '';
  foreach (
$split as $s) {
    if (
substr($s02) != '&#38;#' || substr($s, -11) != ';') {
      
// filter out "ANSI_X3.4-1968" charset, which just means plain old ASCII ... replace by UTF-8
      
if (strpos($context['character_set'], 'ANSI_') !== false$charset 'UTF-8'; else $charset $context['character_set'];
      
$result .= @htmlentities($sENT_NOQUOTES$charset);
    } else {
      
$result .= $s;
    }
  }
  return 
$result;
}

//display html header
echo '<html xmlns="http://www.w3.org/1999/xhtml"' . ($context['right_to_left']?' dir="rtl"':'') . '>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset='
$context['character_set'], '" />';
  
$result db_query("SELECT time FROM {$db_prefix}sbox_content ORDER BY time DESC LIMIT 1"__FILE____LINE__);
$row mysql_fetch_assoc($result);
$refreshBlocked false;
$delta time() - $row['time'];
if ((!empty(
$_REQUEST['action'])) && ($_REQUEST['action'] == 'write')) $dontblock true; else $dontblock false;
if ((
$delta $modSettings['lastActive']*60) && ($modSettings['sbox_BlockRefresh'] == '1') && (!$dontblock)) {
  
$refreshBlocked true;
} elseif (empty(
$_REQUEST['action']) || ($_REQUEST['action'] != 'stoprefresh')) {
  echo 
'
  <meta http-equiv="refresh" content="' 
$modSettings['sbox_RefreshTime'] . ';URL=sboxDB.php?ts=' time() . '">';
}

$sbox_CurTheme strtolower(substr($settings['theme_url'], strrpos($settings['theme_url'], '/')+1));
$sbox_DarkThemes explode('|'strtolower($modSettings['sbox_DarkThemes']));
if (
in_array($sbox_CurTheme$sbox_DarkThemes)) {
  
$sbox_TextColor2 $modSettings['sbox_TextColor2'];
} else {
  
$sbox_TextColor2 $modSettings['sbox_TextColor1'];
}

echo 
'
  <link rel="stylesheet" type="text/css" href="' 
$settings['theme_url'] . '/style.css?rc2" />
  <script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
    function kill() { return confirm("' 
$txt['sbox_KillShout'] . '"); }
    function clearHist() { return confirm("' 
$txt['quickmod_confirm'] . '"); }

    // get SMF-time including time zone corrections (system+user)
    if (parent && parent.document.sbox.ts) {
      parent.document.sbox.ts.value = ' 
forum_time(true) . ';
    }
    // ]]></script>
  <style type="text/css">
  
    .windowbg2 {
      font-family: ' 
$modSettings['sbox_FontFamily'] . ';
      font-style: normal;
      font-size: ' 
$modSettings['sbox_TextSize'] . ';
      font-weight: normal;
      text-decoration: none;
    }

    .Even {
      color: ' 
$sbox_TextColor2 ';
      font-weight: normal;
      text-decoration: none;
    }
    
    body {
      width: 100%;
      padding: 0;
      margin: 0;
      border: 0;
    }
 
    .Kill, A.Kill {
      color: #ff0000;
    }
  </style>'
;


if (!empty(
$_REQUEST['action'])) switch ($_REQUEST['action']) {
 
  case 
'write':
    if  (((!
$context['user']['is_guest']) || ($modSettings['sbox_GuestAllowed'] == '1')) && !empty($_REQUEST['sboxText'])) {
      
is_not_banned(true);  // die with message, if user is banned, let him read everything though
      
$content $_REQUEST['sboxText'];
      
// get current timestamp
      
$date time();
    
      
$posterip $user_info['ip'];
      
$pip explode('.'$posterip);
      
$piph sprintf("%02s%02s%02s%02s"dechex($pip[0]), dechex($pip[1]), dechex($pip[2]), dechex($pip[3]));
    
      
// handle special characters
      
$content addslashes($piph $content);
    
      
// insert shout message into database
      
$sql "INSERT INTO " $db_prefix "sbox_content (ID_MEMBER, content, time) VALUES ('" $context['user']['id'] . "', '" $content "', '$date')";
      
db_query($sql__FILE____LINE__);
    
      
// delete old shout messages (get id of last shouting and delete all shoutings as defined in settings
      
$result db_query("SELECT id FROM " $db_prefix "sbox_content WHERE ID_MEMBER='" $context['user']['id'] . "' AND content='" $content "' AND time='$date'"__FILE____LINE__);
      
$rows mysql_fetch_assoc($result);
      
$sql 'DELETE FROM ' $db_prefix "sbox_content WHERE id < '" . ($rows["id"]-$modSettings['sbox_MaxLines']) . "'";
      
db_query($sql__FILE____LINE__);
      
      
// write into history if needed
      
if ($modSettings['sbox_DoHistory'] == '1') {
        
$ds $sbox_DatePrefix date('Y-m-d'$date) . $sbox_DateSeparator date('H:i.s'$date) . $sbox_DateSuffix;
        
        
$content stripslashes($content); // shouting content
        
$content substr($content8);
        
$content missinghtmlentities($content);
        if (
$modSettings['sbox_AllowBBC'] == '1' && ($context['user']['id'] > || $modSettings['sbox_GuestBBC'] == '1')) {
          
$content parse_bbc($content);
        }
        
        
$output $ds '&nbsp;' $sbox_NickPrefix;
        if (
$context['user']['id'] > 0) {
          
$output .= '<a href="' $scripturl '?action=profile;u=' $context['user']['id'] . '" target="_blank" class="' $divclass '">';
          
$output .= $sbox_NickInnerPrefix . ((!empty($context['user']['name']))?$context['user']['name']:$context['user']['username']) . $sbox_NickInnerSuffix;
          
$output .= '</a>';
        } else {
          
$output .= $sbox_NickInnerPrefix 'Guest-' base_convert($piph1636) . $sbox_NickInnerSuffix;
        }
        
$output .= $sbox_NickSuffix '&nbsp;' $content '</div><br />' "\n";
        
        if (!
file_exists($sbox_HistoryFile)) {
          
// TODO: Prepare file ... HTML-header, stylesheet, etc.
        
}
        
        
locked_filewrite($sbox_HistoryFile$output);
      }
    }
    break;
   
  case 
'clearhist':
    if (
$context['user']['is_admin']) {
      if (
file_exists($sbox_HistoryFile)) {
        
$lockDir $sbox_HistoryFile '.lock';
        
$start time();
        while ((
is_dir($lockDir)) && ((time() - $start) < 5)) {
          
usleep(100000);  // sleep 1/10th of a second (for a PC these are ages!)
        
}
        if (!
is_dir($lockDir)) @unlink($sbox_HistoryFile);
      }
    }
    break;

  case 
'kill':
    if  (!empty(
$_REQUEST['kill']) && ($context['user']['is_admin'] || ($modSettings['sbox_ModsRule'] && count(boardsAllowedTo('moderate_board'))>0))) {
      
$sql 'DELETE FROM ' $db_prefix 'sbox_content WHERE id=' intval($_REQUEST['kill']);
      
db_query($sql__FILE____LINE__);
    }
    break;
    
}

// close header and open body
echo '
</head>
<body class="windowbg2"><div class="windowbg2">'
;

echo 
"\n" '<b>' $sbox_DatePrefix strftime($user_info['time_format'], forum_time(true)) . $sbox_DateSuffix;
if (
$refreshBlocked) {
  echo 
' ' $txt['sbox_RefreshBlocked'];
}
echo 
'</b><br />';

if (
$context['user']['is_admin']) {
  if (
$modSettings['sbox_DoHistory'] == '1') {
    echo 
"\n";
    if (
file_exists($sbox_HistoryFile)) {
      echo 
'[<a href="' str_replace($boarddir$boardurl$sbox_HistoryFile) . '" target="_blank">' $txt['sbox_History'] . '</a>]';
      echo 
' [<a href="' $_SERVER['PHP_SELF'] . '?action=clearhist" class="Kill" onClick="return clearHist();">' $txt['sbox_HistoryClear'] . '</a>]';
    } else {
      echo 
'[' $txt['sbox_HistoryNotFound'] . ']';
    }
    echo 
'';
  }
}

if (!
$refreshBlocked) {
  if (!empty(
$_REQUEST['action']) && ($_REQUEST['action'] == 'stoprefresh')) {
    echo 
' [<a href="' $_SERVER['PHP_SELF'] . '">' $txt['sbox_RefreshEnable'] . '</a>]';
  } else {
    echo 
' [<a href="' $_SERVER['PHP_SELF'] . '?action=stoprefresh">' $txt['sbox_RefreshDisable'] . '</a>]';
  }
}

/*
if (!empty($settings['display_who_viewing'])) {
  echo '<small>';
  if ($settings['display_who_viewing'] == 1)
    echo count($context['view_members']), ' ', count($context['view_members']) == 1 ? $txt['who_member'] : $txt[19];
  else
    echo empty($context['view_members_list']) ? '0 ' . $txt[19] : implode(', ', $context['view_members_list']) . ((empty($context['view_num_hidden']) or $context['can_moderate_forum']) ? '' : ' (+ ' . $context['view_num_hidden'] . ' ' . $txt['hidden'] . ')');
  echo $txt['who_and'], $context['view_num_guests'], ' ', $context['view_num_guests'] == 1 ? $txt['guest'] : $txt['guests'], $txt['who_viewing_board'], '</small>';
}
*/

// get shout messages out of database
$result db_query("
  SELECT *
  FROM 
{$db_prefix}sbox_content AS sb 
    LEFT JOIN 
{$db_prefix}members AS mem ON (mem.ID_MEMBER = sb.ID_MEMBER)
  ORDER BY id DESC, time ASC LIMIT " 
$modSettings['sbox_MaxLines'], __FILE____LINE__);
if(
mysql_num_rows($result)) {
  
$lname '';
  
$count 0;
  
$div false;
  
$alert false;
  while(
$row mysql_fetch_assoc($result)) {
    
$name $row['ID_MEMBER'];           // user name
    
$date forum_time(true$row['time']);           // shouting date and time
    
$content stripslashes($row['content']); // shouting content
    
$piph substr($content08);
    
$content substr($content8);
    
censorText($content);
    
$content missinghtmlentities($content);
    if (
$modSettings['sbox_AllowBBC'] == '1' && ($name || $modSettings['sbox_GuestBBC'] == '1')) {
      
$content preg_replace('/(\[img)(.*?)(\[\/img\])/i'''$content);   // filter out [img]-BBC
      
$content parse_bbc($content);
    }

    if (!empty(
$_REQUEST['ts']) && !$div && $date<$_REQUEST['ts']) {
      if (
$count && $modSettings['sbox_NewShoutsBar'] == '1') {
        echo 
'<hr>' "\n";
      }
      
$div true;
    }
    
    if (
$name != $lname) {
      
$count++;           // increase counter
    
}
    
$lname $name;

    
// display shouting message and use a different color each second row
    
if ($count == 0) {
      
$divclass 'windowbg2';
    } else {
      
$divclass 'Even';
    }

/*    $r = $g = $b = 0;
    for ($i=0;$i<strlen($name);$i++) {
      $x = ord(substr($name, $i, 1));
      switch ($i % 3) {
        case 0: $r += $x; break;
        case 1: $g += $x; break;
        case 2: $b += $x; break;
      }
    }
    $r = dechex($r % 192);
    $g = dechex($g % 192);
    $b = dechex($b % 192);
    if (strlen($r)<2) $r = '0' . $r;
    if (strlen($g)<2) $g = '0' . $g;
    if (strlen($b)<2) $b = '0' . $b;
    $colh = $r . $g . $b;

    echo "\n" . '<div class="' . $divclass . '" style="color: #' . $colh . '">'; */
    
echo "\n" '<div class="' $divclass '">';
    
    if (
$context['user']['is_admin'] || ($modSettings['sbox_ModsRule'] && count(boardsAllowedTo('moderate_board'))>0)) {
      echo 
'[<a title="' $txt['sbox_KillShout'] . '" class="Kill" onClick="return kill();" href="' $_SERVER['PHP_SELF'] . '?action=kill&kill=' $row['id'] . '">X</a>]';
    }
    
    
$wd $txt['days_short'][date('w'$date)];
    
$ts date('H:i'$date);
    
$ds $sbox_DatePrefix $wd $sbox_DateSeparator $ts $sbox_DateSuffix;
    
    
// highlight username, realname and make sound
    
if (!empty($context['user']['name']) && strpos($content$context['user']['name']) !== false) {
      if (
$div === false$alert true;
      
$content str_replace($context['user']['name'], '<b><u>' $context['user']['name'] . '</u></b>'$content);
    }
    if (!empty(
$user_info['username']) && $user_info['username'] != $context['user']['name'] && strpos($content$user_info['username']) !== false) {
      if (
$div === false$alert true;
      
$content str_replace($user_info['username'], '<b><u>' $user_info['username'] . '</u></b>'$content);
    }
    
    echo 
$ds '&nbsp;' $sbox_NickPrefix;
    if (
$name 0) {
      if (
$modSettings['sbox_UserLinksVisible'] == '1') echo '<a href="' $scripturl '?action=profile;u=' $name '" target="_top" style="text-decoration: none;"><span class="' $divclass '">';
      echo 
$sbox_NickInnerPrefix . ((!empty($row['realName']))?$row['realName']:$row['memberName']) . $sbox_NickInnerSuffix;
      if (
$modSettings['sbox_UserLinksVisible'] == '1') echo '</span></a>';
    } else {
      echo 
$sbox_NickInnerPrefix $txt['sbox_Guest'] . '-' base_convert($piph1636) . $sbox_NickInnerSuffix;
    }
    echo 
$sbox_NickSuffix '&nbsp;' $content '</div>';
  }
  if ((
$modSettings['sbox_EnableSounds']) && ($alert === true) && ($div === true)) {
    echo 
'<embed src="' $boardurl '/chat-inbound_GSM.wav" hidden="true" autostart="true" loop="false"></embed>' "\n";
  }
}

?>

</div>
</body>
</html>


στη γραμμή 180 θα βρεις το // handle special characters .......... το spacial Δεν υπάρχει πουθενά γιατί είναι ορθρογραφικό λάθος!

diavlos

Nefeli
Σε ευχαριστώ που απάντησες όσο όμως και να έψαξα και όσες αλλαγές και να έκανα τα smiles εξακολουθούν να μη εμφανίζονται


Nefeli

Εγώ δοκίμασα να προσαρμόσω για μέρες το SMF Shoutbox του mbirth sbox_v1.16 . Απέτυχα παταγωδώς στα Ελληνικά αλλά τελικά έχει διάφορα προβλήματα όπως παράδειγμα πως δεν απεγκαθίσταται αυτόματα. Με αυτό έβλεπα όμως κανονικότατα τα smileys που τα εμφανίζει στη μπάρα πάνω και όχι δεξιά του κουτιού εισαγωγής.


Μήπως μιλάμε για διαφορετικό shoutbox? Μήπως δηλαδή μιλάς για το  SMF Shoutbox του Deep sbox που αν έχω καταλάβει καλά, είναι η βάση στην οποία έχει στηριχθεί ο mbirth.
Μήπως γι αυτό έβλεπες διαφορετικό περιεχόμενο στο αρχείο sboxDB.php?

Στην εκδοχή του mbirth πάντως τα smileys είναι αυτά που χρησιμοποιεί και το smf, τα ρυθμισμένα να φαίνονται και στα θέματα μέσα στο φόρουμ. Αν μιλάμε λοιπόν για το ίδιο shoutbox, ψάξε να δεις αν φαίνονται τα smileys μέσα στο φόρουμ σου. Έλεγξε και τη διαδρομή .../smileys/default/ αν έχουν ανέβει όλα σωστά.

Δεν μπορώ να φανταστώ τίποτα άλλο.

Γεγονός είναι πως τελικά είναι προβληματικό παρά τον αρχικό μου ενθουσιασμό.

diavlos

Καλημέρα!

Τελικά το βρήκα!!!!!!
Πρόσθεσα το :

//SMF Shoutbox
$txt['sbox_ModTitle'] = 'SMF Shoutbox';
$txt['sbox_Visible'] = 'Shoutbox is visible';
$txt['sbox_GuestAllowed'] = 'Guests are allowed to shout';
$txt['sbox_MaxLines'] = 'Maximum number of displayed lines';
$txt['sbox_Height'] = 'Shoutbox height';
$txt['sbox_SmiliesVisible'] = 'Smilie window is visible';
$txt['sbox_smilie01_text'] = 'blblbl!';
$txt['sbox_smilie02_text'] = 'grinning';
$txt['sbox_smilie03_text'] = 'laughing';
$txt['sbox_smilie04_text'] = 'kissing';
$txt['sbox_smilie05_text'] = 'smiling';
$txt['sbox_smilie06_text'] = 'that´s okay!';
$txt['sbox_smilie07_text'] = 'smoking';
$txt['sbox_smilie08_text'] = 'greeting';
$txt['sbox_smilie09_text'] = 'cheerio!';
$txt['sbox_smilie10_text'] = 'oops';
$txt['sbox_smilie11_text'] = 'praying';
$txt['sbox_smilie12_text'] = 'crying';
$txt['sbox_smilie13_text'] = 'angry';
$txt['sbox_smilie14_text'] = 'baaaaaad';
$txt['sbox_smilie15_text'] = 'headbanging';
$txt['sbox_smilie01_code'] = ':frech:';
$txt['sbox_smilie02_code'] = ';-)';
$txt['sbox_smilie03_code'] = ':-]';
$txt['sbox_smilie04_code'] = ':-s';
$txt['sbox_smilie05_code'] = ':-)';
$txt['sbox_smilie06_code'] = ':-!';
$txt['sbox_smilie07_code'] = ':smoking:';
$txt['sbox_smilie08_code'] = ':greeting:';
$txt['sbox_smilie09_code'] = ':cheerio:';
$txt['sbox_smilie10_code'] = ':-O';
$txt['sbox_smilie11_code'] = ':praying:';
$txt['sbox_smilie12_code'] = ':crying:';
$txt['sbox_smilie13_code'] = ':-(';
$txt['sbox_smilie14_code'] = ':bad:';
$txt['sbox_smilie15_code'] = ':bang:';
$txt['sbox_smilie01_file'] = 'sbox_funny.gif';
$txt['sbox_smilie02_file'] = 'sbox_grin.gif';
$txt['sbox_smilie03_file'] = 'sbox_laugh.gif';
$txt['sbox_smilie04_file'] = 'sbox_kiss.gif';
$txt['sbox_smilie05_file'] = 'sbox_smile.gif';
$txt['sbox_smilie06_file'] = 'sbox_yeah.gif';
$txt['sbox_smilie07_file'] = 'sbox_smoke.gif';
$txt['sbox_smilie08_file'] = 'sbox_hand.gif';
$txt['sbox_smilie09_file'] = 'sbox_cheerio.gif';
$txt['sbox_smilie10_file'] = 'sbox_oops.gif';
$txt['sbox_smilie11_file'] = 'sbox_church.gif';
$txt['sbox_smilie12_file'] = 'sbox_cry.gif';
$txt['sbox_smilie13_file'] = 'sbox_angry.gif';
$txt['sbox_smilie14_file'] = 'sbox_bad.gif';
$txt['sbox_smilie15_file'] = 'sbox_bang.gif';
$txt['sbox_Monday'] = 'Monday';
$txt['sbox_Tuesday'] = 'Tuesday';
$txt['sbox_Wednesday'] = 'Wednesday';
$txt['sbox_Thurday'] = 'Thurday';
$txt['sbox_Friday'] = 'Friday';
$txt['sbox_Saturday'] = 'Saturday';
$txt['sbox_Sunday'] = 'Sunday';
$txt['sbox_KillShout'] = 'Dou you want to kill this shout?';
$txt['sbox_TextSize1'] = '1. Font size';
$txt['sbox_TextColor1'] = '1. Font color';
$txt['sbox_TextSize2'] = '2. Font size';
$txt['sbox_TextColor2'] = '2. Font color';
$txt['sbox_RefreshTime'] = 'Refresh time';
$txt['sbox_BackgroundColor'] = 'Background color';
$txt['sbox_FontFamily1'] = '1. Font family';
$txt['sbox_FontFamily2'] = '2. Font family';

Στο Modifications.greek-utf8.php

Και όλα «δουλεύουν» κανονικά το μόνο πρόβλημα που παρουσιάζετε είναι με τα pm, δεν μου εμφανίζει το «παράθυρο» ότι έχω pm το ψάχνω αλλά δεν έχω βρει πως μπορώ να το διορθώσω χωρίς να «βγάλω» την αυτόματη ανανέωση από το shoutbox. (Ξέρει κάποιος?!?!?!??!)

Nefeli
ναι η έκδοση που εγκατέστησα είναι του Deep προσπάθησα να εγκαταστήσω την έκδοση του mbirth αλλά μου δημιουργούσε σφάλματα στη βάση και κάποια άτομα δεν μπορούσαν να κάνουν login.

Advertisement: