phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
Top 10
Re: Top 10
avete guardato come è strutturato il codice php della mod Top_five? L'ho postato nel primo messaggio. Secondo me li in mezzo c'è la soluzione ma io non ci capisco una ceppa...
Re: Top 10
Ho cambiato il codice in index.php:
Non è cambiato nulla Bingo, io da amministratore vedo i 10 topic più visti, se provo i permessi di un utente, ne vedo soltanto 6.
Non è cambiato nulla Bingo, io da amministratore vedo i 10 topic più visti, se provo i permessi di un utente, ne vedo soltanto 6.
- Micogian
- Leader Programmatori

- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: Top 10
Aspetta un pò, io non l'ho mai provata questa, vediamo dove può esserci il problema.peter6777 ha scritto:Ho cambiato il codice in index.php:
Non è cambiato nulla Bingo, io da amministratore vedo i 10 topic più visti, se provo i permessi di un utente, ne vedo soltanto 6.
Secondo me nel valore di $x che aumenta solo se la condizione è corretta.
Forse è sbagliato in quella posizione.
Prova così:
Codice: Seleziona tutto
// Controlla gli ultimi 50 topics, elimina quelli senza permesso di lettura e crea un array limitato a 10 records.
$sql4 = "SELECT pt.topic_id, pt.forum_id, pt.topic_title, pt.topic_time, pt.topic_type, pt.topic_moved_id, pt.topic_last_poster_name, pp.post_id, pp.post_time
FROM " . TOPICS_TABLE . " pt ," . POSTS_TABLE . " pp
WHERE pt.topic_id = pp.topic_id
AND pt.topic_type = 0
AND pt.topic_moved_id = 0
ORDER BY pp.post_time DESC LIMIT 0,50";
$result4 = $db->sql_query($sql4);
$topic_cor = '' ;
$x = 0 ;
while ($row4 = $db->sql_fetchrow($result4))
{
if ($auth->acl_get('f_read', $row4['forum_id']) == 1) {
if( $row4['topic_id'] <> $topic_cor && $x < 11 ){
$x = ++$x ;
$template->assign_block_vars('last_posts_list', array(
'VIEW_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id']),
'VIEW_TITOLO' => $row4['topic_title'],
'VIEW_AUTHOR' => $row4['topic_last_poster_name'],
'VIEW_VIEWS' => $row4['topic_views'],
'LAST_DATA' => date("d.m.Y",$row4['post_time'])
));
}
}
$topic_cor = $row4['topic_id'] ;
}
$db->sql_freeresult($result4);In teoria non fa una grinza, l'importante è che il numero $x non aumenti se non viene creata la variabile e quindi ne dovrebbe creare 10, salvo che tra i 50 posts non ci siano 44 riservati.
Ma, dovrei provarla, poi ti so dire.
Re: Top 10
Questa proprio non funziona... nella tabella non viene mostrato nulla.
- Micogian
- Leader Programmatori

- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: Top 10
Ho fatto qualche ritocco, come l'ordinamento per Topic_id, altrimenti ripeteva i Topics perchè i posts erano odinati per data enon per topics.
Il problema è che se il post corrente è simile al precedente non lo inseisce ma se il post non è conseguente lo rimette.
Prova questo file, chiamala prova.php o come vuoi e vedi cosa ti dà. Non serve il template che è escluso.
Il file fornisce l'elenco dei Topics che finiscono nella lista (ne ho messi 100 di topic da controllare)
Se funziona devi inserire la parte della query escludendo la riga echo.....
A me ha funzionato
Il problema è che se il post corrente è simile al precedente non lo inseisce ma se il post non è conseguente lo rimette.
Prova questo file, chiamala prova.php o come vuoi e vedi cosa ti dà. Non serve il template che è escluso.
Il file fornisce l'elenco dei Topics che finiscono nella lista (ne ho messi 100 di topic da controllare)
Se funziona devi inserire la parte della query escludendo la riga echo.....
Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
// Configure style, language, etc.
$user->setup('viewforum');
// Controlla gli ultimi 100 topics, elimina quelli senza permesso di lettura e crea un array limitato a 10 records.
$sql4 = "SELECT pt.topic_id, pt.forum_id, pt.topic_title, pt.topic_time, pt.topic_type, pt.topic_moved_id, pt.topic_last_poster_name, pp.post_id, pp.post_time
FROM " . TOPICS_TABLE . " pt ," . POSTS_TABLE . " pp
WHERE pt.forum_id > 0
AND pt.topic_id = pp.topic_id
AND pt.topic_type = 0
AND pt.topic_moved_id = 0
ORDER BY pp.topic_id, pp.post_time DESC LIMIT 0,100";
$result4 = $db->sql_query($sql4);
$topic_cor = '' ;
$x = 0 ;
while ($row4 = $db->sql_fetchrow($result4))
{
if ($auth->acl_get('f_read', $row4['forum_id']) == 1) {
if( $row4['topic_id'] <> $topic_cor && $x < 10 ){
$topic_cor = $row4['topic_id'] ;
$template->assign_block_vars('last_posts_list', array(
'VIEW_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $row4['forum_id'] . "&t=" . $row4['topic_id']),
'VIEW_TITOLO' => $row4['topic_title'],
'VIEW_AUTHOR' => $row4['topic_last_poster_name'],
'VIEW_VIEWS' => $row4['topic_views'],
'LAST_DATA' => date("d.m.Y",$row4['post_time'])
));
echo $x . " - " . $row4['topic_title'] . " - " .$row4['forum_id'] . "<br>";
$x = ++$x ;
}
}
}
$db->sql_freeresult($result4);
//page_header('pagina di prova');
//$template->set_filenames(array(
// 'body' => 'mod_page_body.html')
//);
//make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
//page_footer();
?>Re: Top 10
Ciao Bingo, ho provato anch'io questa query ma il problema non è risolto,c'è qualcosa che tocca, nel senso che come tutte le altre tiene conto dei permessi utente ma semplicemente elimina i posts che l'utente non può vedere senza aggiungerne altri....inotre questa query non mostra i posts in ordine di visite! sono a caso e la lista non rispetta la realtà delle visite (nel forum ad esempio ho un post con più di 200 visite e in questa lista non compare neanche).
Non voglio essere ripetitivo ma nella query che ho postato nel primo post (quella della Mod Top_Five) sicuramente c'è la soluzione al mio problema perchè in quella mod i messaggi sono sempre 10 a seconda dei permessi utente.....solo che io non ci capisco molto e non riesco a trovare le differenze con le tue query...
per scrupolo e scaramanzia ti riposto la query che mostra glii ultimi 5 (che io ho fatto diventare 10) posts inseriti, io la guardo e la riguardo ma non capisco proprio...
Non voglio essere ripetitivo ma nella query che ho postato nel primo post (quella della Mod Top_Five) sicuramente c'è la soluzione al mio problema perchè in quella mod i messaggi sono sempre 10 a seconda dei permessi utente.....solo che io non ci capisco molto e non riesco a trovare le differenze con le tue query...
per scrupolo e scaramanzia ti riposto la query che mostra glii ultimi 5 (che io ho fatto diventare 10) posts inseriti, io la guardo e la riguardo ma non capisco proprio...
Codice: Seleziona tutto
if (!defined('INCLUDES_TOP_FIVE_PHP'))
{
define('INCLUDES_TOP_FIVE_PHP', true);
global $auth, $cache, $config, $user, $db, $phpbb_root_path, $phpEx, $template;
$user->add_lang('mods/top_five');
// grab auths that allow a user to read a forum
$forum_array = array_unique(array_keys($auth->acl_getf('!f_read', true)));
// we have auths, change the sql query below
$sql_and = '';
if (sizeof($forum_array))
{
$sql_and = ' AND ' . $db->sql_in_set('p.forum_id', $forum_array, true);
}
// grab all posts that meet criteria and auths
$sql_ary = array(
'SELECT' => 'MAX(p.post_time) as post_time, u.user_id, u.username, u.user_colour, t.topic_title, t.forum_id, t.topic_last_post_id',
'FROM' => array(TOPICS_TABLE => 't', POSTS_TABLE => 'p'),
'LEFT_JOIN' => array(
array(
'FROM' => array(USERS_TABLE => 'u'),
'ON' => 'p.poster_id = u.user_id',
),
),
'WHERE' => 'p.topic_id = t.topic_id
AND p.post_approved = 1
AND t.topic_moved_id = 0' . $sql_and,
'GROUP_BY' => 't.topic_id',
'ORDER_BY' => 'post_time DESC',
);
$result = $db->sql_query_limit($db->sql_build_query('SELECT', $sql_ary), 5);
while( $row = $db->sql_fetchrow($result) )
{
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . '&p=' . $row['topic_last_post_id'] . '#p' . $row['topic_last_post_id']);
$topic_title = censor_text($row['topic_title']);
$template->assign_block_vars('top_five_topic',array(
'U_TOPIC' => $view_topic_url,
'USERNAME_FULL' => $user->lang['BY'] . ' ' . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
'TOPIC_TITLE' => $user->lang['IN'] . ' ' . $topic_title));
}
$db->sql_freeresult($result);
// an array of user types we dont' bother with
// could add board founder (USER_FOUNDER) if wanted
$ignore_users = array(USER_IGNORE, USER_INACTIVE);
// top five posters
if (($user_posts = $cache->get('_top_five_posters')) === false)
{
$user_posts = array();
// grab users with most posts
$sql = 'SELECT user_id, username, user_colour, user_posts
FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('user_type', $ignore_users, true) . '
AND user_posts <> 0
ORDER BY user_posts DESC';
$result = $db->sql_query_limit($sql, 5);
while ($row = $db->sql_fetchrow($result))
{
$user_posts[$row['user_id']] = array(
'user_id' => $row['user_id'],
'username' => $row['username'],
'user_colour' => $row['user_colour'],
'user_posts' => $row['user_posts'],
);
}
$db->sql_freeresult($result);
// cache this data for 5 minutes, this improves performance
$cache->put('_top_five_posters', $user_posts, 300);
}
foreach ($user_posts as $row)
{
$username_string = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
$template->assign_block_vars('top_five_active',array(
'S_SEARCH_ACTION' => append_sid("{$phpbb_root_path}search.$phpEx", 'author_id=' . $row['user_id'] . '&sr=posts'),
'POSTS' => $row['user_posts'],
'USERNAME_FULL' => $username_string)
);
}Re: Top 10
Carlo, Bingo?........ho chiesto troppo?...

- Micogian
- Leader Programmatori

- Messaggi: 3704
- Iscritto il: 07/01/2010, 8:51
- Versione: 3.2.0
- Server: UNIX/Linux
- PHP: 5.4.36
- Database: MySQL 5.1.70-log
- Località: Udine
- Contatta:
Re: Top 10
No, solo che sia io che Carlo abbiamo qualche impegno di troppo e non sempre si arriva dappertutto.peter6777 ha scritto:Carlo, Bingo?........ho chiesto troppo?...
A volte è difficile intervenire sullo script di un'altro, bisogna avere una grande dimestichezza.
In informatica spesso si ottiene lo stesso risultato seguendo vie diverse, in base alle rispettive conoscenze e approccio al problema.
Ho provato la mia mod, sono d'accordo che c'è il problema di un ordinamento sbagliato dovuto al fatto che l'approccio, appunto, era quello di controllare se il Topic corrente fosse uguale al precedente e quindi da non considerare. Se metto in ordine di Posts, cosa che sarebbe giusta, i topics non sono più in ordine col rischio che vengano inseriti più volte, l'ordine per Post non consente questo controllo.
Devo vedere, sto meno a studiare il mio script piuttosto che capire quello di Carlo, senza dubbio sono io ad avere delle lacune.
Resta il fatto che il mio script, per le prove che ho fatto, al di la dell'ordinamento non corretto, estrae sempre 10 Titoli.
Re: Top 10
Vi stimo sempre e comunque per l'impegno e l'esperienza che ci mettete. Questo è indubbio.
Chi c’è in linea
Visitano il forum: Nessuno e 38 ospiti
