Seite 4 von 5
Verfasst: 10.10.2003 13:29
von Gast
Zunächst mal danke für Deine Antwort.
Im Moment stehen im Feld
smile_stats Werte, die ich praktisch von Hand eingegeben habe.
Ich möchte aber, dass dieses Feld automatisch gefüllt wird, und zwar mit den Werten, die der Statistik-Mod ermittelt.
Auf der Statistik-Seite wird mir ja angezeigt, dass z.B. smiley

x-mal aufgerufen wurde und damit Rang 1 hat, smiley

wurde y-mal aufgerufen und hat Rang 2 usw. usw.;
Und diesen Rangwert (im template heisst er {topsmilies.RANK}) müsste ich doch irgendwie in das Datenbankfeld
smile_stats reinkriegen können
(so wie beim counter ja auch der in der php-Datei ermittelte Wert wieder an die Datenbank übergeben wird) ?
Leider fehlt mir (noch) das entsprechende php-Wissen, und mit dem was ich bisher probiert habe, bekomme ich nur parse-errors.
Liebe Grüsse, Andrea
Verfasst: 24.10.2003 21:19
von beginner
schön und gut, jetzt weiss ich wo ich im board für die benutzer die reihenfolge verändern kann, aber wo muss ich was einstellen das ich im adminbereich auch eine sortierte ansicht habe. was mich auch iritiert ist, dass ich bei der funktion "einen neuen smily hinzufügen" -> "smilie bilddatei" ebenfalls absolut keine vernünftige reihenfolge habe.
wo stell ich das um?
Verfasst: 26.10.2003 14:45
von Gast
Hallo beginner,
sowie ich festgestellt hab, werden die smilies im admin-Bereich genau in der Reihenfolge dargestellt, wie sie in der Datenbank-Tabelle drinstehen.
Du kannst mit PhpMyAdmin die Tabelle phpbb_smilies öffnen, dann über 'Operationen' 'Tabelle sortieren nach' neusortieren lassen nach einem Datenbankfeld, z.B. smile_url,
dann werden sie Dir im Admin-Bereich alphabetisch geordnet angezeigt.
Zu meinem Problem:
ich bin offenbar drauf reingefallen, dass es vom statistics-mod verschiedene Versionen gibt oder gab.
Ich habe den neuesten 2.1.5 von AcydBurn eingebaut, der Beitrag von K (vom 28.06.2003) auf Seite 2 dieses threads bezieht sich aber scheinbar auf einen anderen (oder älteren ?) von Nivisec.
Ich habe diesen bisher nicht kpl. gefunden, nur einen thread unter phpbb.com, in dem ein Teil dieses mods gepostet wurde; darin stehen einige Zeilen betr. smile_stats, die in der neuen Version gar nicht mehr vorkommen; also kein Wunder, dass das so nicht funktionieren konnte.
Vielleicht weiss jemand, wo's diese andere Version noch gibt (war glaub ich irgendwas mit 1.2.2), ich würde mir gern mal anschauen, wie das gelöst wurde.
Gruss, Andrea
Verfasst: 13.12.2003 21:20
von pantherkatze
Anonymous hat geschrieben:Zunächst mal danke für Deine Antwort.
Im Moment stehen im Feld
smile_stats Werte, die ich praktisch von Hand eingegeben habe.
Ich möchte aber, dass dieses Feld automatisch gefüllt wird, und zwar mit den Werten, die der Statistik-Mod ermittelt.
Auf der Statistik-Seite wird mir ja angezeigt, dass z.B. smiley

x-mal aufgerufen wurde und damit Rang 1 hat, smiley

wurde y-mal aufgerufen und hat Rang 2 usw. usw.;
Und diesen Rangwert (im template heisst er {topsmilies.RANK}) müsste ich doch irgendwie in das Datenbankfeld
smile_stats reinkriegen können
(so wie beim counter ja auch der in der php-Datei ermittelte Wert wieder an die Datenbank übergeben wird) ?
Leider fehlt mir (noch) das entsprechende php-Wissen, und mit dem was ich bisher probiert habe, bekomme ich nur parse-errors.
Liebe Grüsse, Andrea
Ich hab da heute mal gebastelt:
es muss "Board Statistics 2.1.5" und das Modul "Top Smilies" installiert sein
in der Tabelle phpbb_smilies ein Extrafeld "smile_stat" einfügen
dann in top_smilies/module.php suchen nach:
Code: Alles auswählen
$all_smilies[$i]['count'] = $count;
$all_smilies[$i]['code'] = $smile_codes[0]['code'];
$all_smilies[$i]['smile_url'] = $smile_codes[0]['smile_url'];
$total_smilies = $total_smilies + $count;
danach einfügen:
Code: Alles auswählen
$sql="UPDATE " . SMILIES_TABLE . "
SET smile_stat ='" . $all_smilies[$i]['count'] . "'
WHERE smile_url = '" . $all_smilies[$i]['smile_url'] . "'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t retrieve smilies data', '', __LINE__, __FILE__, $sql);
}
dann noch in includes/functions_post.php die Sortierung der Smilies in
ändern
Verfasst: 19.12.2003 16:56
von Gast
uiii -
vielen lieben Dank - genauso ein 'Rezept' hatte ich mir gewünscht
sorry - hab nicht mehr regelmässig reingeschaut, weil ich nicht mehr damit gerechnet hatte, dass jemand antwortet
Liebe Grüsse, Andrea
Verfasst: 23.01.2004 17:04
von Daedalus
kann man smilys eigenltich auch zufällig sortieren lassen?
ja
Verfasst: 25.09.2004 19:28
von SandraH.78
Hallo,
ja das ist möglich Order by RAND() sortiert zufällig.
Gruß sandra
Verfasst: 26.10.2004 08:05
von tazzi
genau so hab ichs gemacht, in myadmin einfach die nummern neu vergeben und schon gings wunderbar
sollte man aber wirklich nur machen wenn einem langweilig ist

Verfasst: 13.01.2005 15:51
von Berserker
Tom_der_phpbb_Fan hat geschrieben:also meiner meinung nach ist was anderes viel einfacher :
ihr geht einfach in eure mysql datenbank und äbdert dort beliebig die id der smilies.
die datei dazu ist die phpbb_smilies
dort vergebt ihr dem smiley, welches ihr als erstes haben möchtet den niedrigsten id wert.
alle weiteren der reihenfolge entsprechend aufsteigend
zb.
1 smiley id 50
2 smiley id 51
und so weiter, das geht schnell und ist sehr einfach.

Gibt es ein Mod der das in den Admin Bereich einfügt?
So wie "Smilie nach oben" und "Smilie nach unten" (Wie in den Foren Einstellungen)
Ich such hier schon ne weile rum hab aber nbichts gefunden.
Den "Smilies Order 0.2.0" Mod scheint ja nicht mehr zu Funktionieren.
Verfasst: 28.04.2006 13:16
von Gismo110
hi meine module.php sieht wie folgt aus und es wird hinter jedem smile in der statistik immer 1% angezeit... Was muss ich ändern, damit man den richtigen Prozentualen wert der nutzung der smiles sieht?
Code: Alles auswählen
<?php
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
// Result Cache used here
//
// Top Smilies
//
//
// Start user modifiable variables
//
//
// Set smile_pref to 0, if you want that smilies are only counted once per post.
// This means that, if the same smilie is entered ten times in a message, only one is counted in that message.
//
$smile_pref = 0;
$bars = array(
'left' => 'images/vote_lcap.gif',
'right' => 'images/vote_rcap.gif',
'bar' => 'images/voting_bar.gif'
);
//
// End user modifiable variables
//
$statistics->init_bars($bars);
//
// Functions
//
//
// sort multi-dimensional array - from File Attachment Mod
//
function smilies_sort_multi_array_attachment ($sort_array, $key, $sort_order)
{
$last_element = count($sort_array) - 1;
$string_sort = ( is_string($sort_array[$last_element-1][$key]) ) ? TRUE : FALSE;
for ($i = 0; $i < $last_element; $i++)
{
$num_iterations = $last_element - $i;
for ($j = 0; $j < $num_iterations; $j++)
{
$next = 0;
//
// do checks based on key
//
$switch = FALSE;
if ( !($string_sort) )
{
if ( ( ($sort_order == 'DESC') && (intval($sort_array[$j][$key]) < intval($sort_array[$j + 1][$key])) ) || ( ($sort_order == 'ASC') && (intval($sort_array[$j][$key]) > intval($sort_array[$j + 1][$key])) ) )
{
$switch = TRUE;
}
}
else
{
if ( ( ($sort_order == 'DESC') && (strcasecmp($sort_array[$j][$key], $sort_array[$j + 1][$key]) < 0) ) || ( ($sort_order == 'ASC') && (strcasecmp($sort_array[$j][$key], $sort_array[$j + 1][$key]) > 0) ) )
{
$switch = TRUE;
}
}
if ($switch)
{
$temp = $sort_array[$j];
$sort_array[$j] = $sort_array[$j + 1];
$sort_array[$j + 1] = $temp;
}
}
}
return ($sort_array);
}
//
// END Functions
//
$template->assign_vars(array(
'L_TOP_SMILIES' => $lang['module_name'],
'L_USES' => $lang['Uses'],
'L_RANK' => $lang['Rank'],
'L_PERCENTAGE' => $lang['Percent'],
'L_GRAPH' => $lang['Graph'],
'L_IMAGE' => $lang['smiley_url'],
'L_CODE' => $lang['smiley_code'])
);
//
// Most used smilies
//
// Determine if Caching is used
if (!$statistics->result_cache_used)
{
@set_time_limit(0);
// Init Cache -- tells the Stats Mod that we want to use the result cache
$result_cache->init_result_cache();
// With every new sql_query insult, the Statistics Mod will end the previous Control. ;)
$sql = 'SELECT code, smile_url
FROM ' . SMILIES_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t retrieve smilies data', '', __LINE__, __FILE__, $sql);
}
$rows = $db->sql_fetchrowset($result);
$num_rows = $db->sql_numrows($result);
$all_smilies = array();
$total_smilies = 0;
$where_query = '';
$smile_group = array();
$smile_urls = array();
$smile_urls['url'] = array();
$count = 0;
for ($i = 0; $i < $num_rows; $i++)
{
$where_query .= ($where_query == '') ? ' (post_text LIKE \'%' . str_replace("'", "\'", $rows[$i]['code']) . '%\')' : ' OR (post_text LIKE \'%' . str_replace("'", "\'", $rows[$i]['code']) . '%\')';
if (!in_array($rows[$i]['smile_url'], $smile_urls['url']))
{
$smile_urls['url'][] = $rows[$i]['smile_url'];
$smile_urls[$rows[$i]['smile_url']] = $count;
$count++;
$all_smilies[$smile_urls[$rows[$i]['smile_url']]]['code'] = str_replace("'", "\'", $rows[$i]['code']);
$all_smilies[$smile_urls[$rows[$i]['smile_url']]]['smile_url'] = $rows[$i]['smile_url'];
}
$smile_group[$smile_urls[$rows[$i]['smile_url']]]['code'][] = str_replace("'", "\'", $rows[$i]['code']);
$smile_group[$smile_urls[$rows[$i]['smile_url']]]['url'][] = $rows[$i]['smile_url'];
$all_smilies[$smile_urls[$rows[$i]['smile_url']]]['count'] = 0;
}
$sql = "SELECT post_text
FROM " . POSTS_TEXT_TABLE . "
WHERE " . $where_query . "
GROUP BY post_text";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Couldn\'t retrieve smilies data', '', __LINE__, __FILE__, $sql);
}
$rows = $db->sql_fetchrowset($result);
$message = '';
for ($i = 0; $i < count($rows); $i++)
{
$message .= $rows[$i]['post_text'];
}
// echo ";".$message.";";
for ($i = 0; $i < count($smile_group); $i++)
{
$found = FALSE;
$match_regexp = '';
for ($j = 0; $j < count($smile_group[$i]['code']) && $found == FALSE; $j++)
{
if ($smile_pref == 0)
{
if (strstr($message, $smile_group[$i]['code'][$j]))
{
$all_smilies[$i]['count'] = $all_smilies[$i]['count'] + 1;
$found = TRUE;
}
}
else
{
$match_regexp .= ($match_regexp == '') ? '/(?<=.\W|\W.|^\W)' . preg_quote($smile_group[$i]['code'][$j], "/") . '(?=.\W|\W.|\W$)' : '|(?<=.\W|\W.|^\W)' . preg_quote($smile_group[$i]['code'][$j], "/") . '(?=.\W|\W.|\W$)';
}
}
if (!$found)
{
if ($match_regexp != '')
{
$match_regexp .= '/';
// echo "<br /><br />" . $match_regexp . "<br />";
// echo "#".$all_smilies[$i]['smile_url']."#";
preg_match_all($match_regexp, ' ' . $message . ' ', $matches);
// echo "<br />-" . count($matches[0]) . "-<br />";
$all_smilies[$i]['count'] = $all_smilies[$i]['count'] + count($matches[0]);
}
}
}
for ($i = 0; $i < count($all_smilies); $i++)
{
$total_smilies = $total_smilies + $all_smilies[$i]['count'];
}
// Sort array
$all_smilies = smilies_sort_multi_array_attachment($all_smilies, 'count', 'DESC');
$limit = ( $return_limit > count($all_smilies) ) ? count($all_smilies) : $return_limit;
for ($i = 0; $i < $limit; $i++)
{
$class = ($i % 2) ? $theme['td_class2'] : $theme['td_class1'];
$statistics->do_math($all_smilies[0]['count'], $all_smilies[$i]['count'], $total_smilies);
if ($all_smilies[$i]['count'] != 0)
{
$template->assign_block_vars('topsmilies', array(
'RANK' => $i+1,
'CLASS' => $class,
'CODE' => $all_smilies[$i]['code'],
'USES' => $all_smilies[$i]['count'],
'PERCENTAGE' => $statistics->percentage,
'BAR' => $statistics->bar_percent,
'URL' => '<img src="'. $board_config['smilies_path'] . '/' . $all_smilies[$i]['smile_url'] . '" alt="' . $all_smilies[$i]['smile_url'] . '" border="0">')
);
}
$result_cache->assign_template_block_vars('topsmilies');
}
}
else
{
// Now use the result cache, with block_num_vars we are getting the number of variables within the block
for ($i = 0; $i < $result_cache->block_num_vars('topsmilies'); $i++)
{
$template->assign_block_vars('topsmilies', $result_cache->get_block_array('topsmilies', $i));
}
}
?>