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

Log dei Download

Cerchi una MOD? Chiedi in questo forum.
Questa sezione è supportata dagli utenti del forum, pertanto lo Staff potrebbe non eseguire tali richieste.
Avatar utente
Micogian
Leader Programmatori
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: Log dei Download

Messaggio da Micogian » 24/11/2010, 13:45

L'esempio visualizza un elenco completo, un utente = un download.
Forse a te serve una cosa diversa che comunque si può fare, ad esempio selezionare un utente e visualizzare tutti i relativi downloads, oppure selezionare un allegato e visualizzare l'elenco degli utenti che lo hanno scaricato, tutte cose fattibili, basta adattare la query.

Mi sono dimenticato di inserire nella query la tabella attachments, con quella hai la possibilità di sapere di che download si tratta, o per lo meno in quale post/topic/forum si trova.

Un esempio di una query su più tabelle è questa che estrae gli ultimi x allegati, Fa parte di una Mod che ho realizzato:

Codice: Seleziona tutto

$sql = "SELECT
pf.forum_name, pf.parent_id, pf.forum_id,
pt.topic_id, pt.forum_id, pt.topic_title, pt.topic_first_poster_name, pt.topic_attachment, pt.topic_moved_id, pt.topic_time,
pp.topic_id, pp.post_id, pp.post_time,
pa.attach_id, pa.topic_id, pa.physical_filename, pa.extension, pa.post_msg_id
FROM ". FORUMS_TABLE." pf,". TOPICS_TABLE. " pt,". POSTS_TABLE. " pp,". ATTACHMENTS_TABLE. " pa
WHERE $where_list
AND pf.forum_id = pt.forum_id
AND pt.topic_id = pa.topic_id
AND pt.topic_id = pp.topic_id
AND pt.topic_time = pp.post_time
AND pp.post_id = pa.post_msg_id
AND pa.extension = 'jpg'
AND pt.topic_moved_id = 0
AND pt.topic_attachment = 1
AND pa.extension = 'jpg'
ORDER BY pt.topic_time DESC LIMIT $n_top";

$db->sql_query($sql);

claxcian
Utente
Utente
Messaggi: 17
Iscritto il: 22/11/2010, 21:40
Versione: 3.0.8
Server: Windows

Re: Log dei Download

Messaggio da claxcian » 24/11/2010, 18:02

Allora io ho creato il file download_list.php l'ho messo in nella cartella principale. Il file contiene:

Codice: Seleziona tutto

<?php
/*
* connect to phpBB
*/
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);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

/*
* session management
*/
$user->session_begin();
$auth->acl($user->data);
$user->setup();

    $sql = "SELECT user_id, attach_id, dataora
        FROM " . MAN_DOWNLOAD_TABLE . "
        ORDER BY user_id";
    $result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
    {
$template->assign_block_vars('download_list', array(

             'DOWNLOAD_USER'      => $row['user_id'],
             'DOWNLOAD_ATTACH'     => $row['attach_id'],
             'DOWNLOAD_DATAORA'     => date("d.m.Y H:i",$row['dataora'])
          ));
    }
	$template->set_filenames(array(
   'body' => 'download_list_body.html')
);
?>
E il file download_list_body.html e l'ho messo nella cartella /styles/prosilver/template. Il file contiene:

Codice: Seleziona tutto

<!-- BEGIN download_list -->
{download_list.DOWNLOAD_USER}, {download_list.DOWNLOAD_ATTACH}, e {download_list.DOWNLOAD_DATAORA},
<!-- END download_list -->
ma se apro http://....foru/download_list.php
non visualizzo niente.

claxcian
Utente
Utente
Messaggi: 17
Iscritto il: 22/11/2010, 21:40
Versione: 3.0.8
Server: Windows

Re: Log dei Download

Messaggio da claxcian » 24/11/2010, 18:06

Forse non conosco bene come visualizzare i dati con il file html o forse altro?

Avatar utente
Micogian
Leader Programmatori
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: Log dei Download

Messaggio da Micogian » 24/11/2010, 18:30

Prova con questo Template:

Codice: Seleziona tutto

<!-- INCLUDE overall_header.html -->
<div class="forabg">
	<div class="inner"><span class="corners-top"><span></span></span>
		<ul class="topiclist">
			<li class="header">
				<dl class="icon">
					<dt>Titolo</dt>
				</dl>
			</li>
		</ul>
		<ul class="topiclist forums">
<!-- BEGIN download_list -->
			<li class="row"><span>{download_list.DOWNLOAD_USER}, {download_list.DOWNLOAD_ATTACH}, e {download_list.DOWNLOAD_DATAORA}</span>
			</li>
<!-- END download_list -->
		</ul>
		<span class="corners-bottom"><span></span></span></div>
	</div>
<!-- INCLUDE overall_footer.html -->
Se non funziona bisogna vedere se la query fornisce un risultato e per fare questo devi togliere il template dallo script e inserire un echo:

Codice: Seleziona tutto

    <?php
    /*
    * connect to phpBB
    */
    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);
    include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

    /*
    * session management
    */
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

        $sql = "SELECT user_id, attach_id, dataora
            FROM " . MAN_DOWNLOAD_TABLE . "
            ORDER BY user_id";
        $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result))
        {
echo "Risultato: " . $row['user_id'] . " - " . $row['attach_id'] . " - " . date('d.m.Y H:i',$row['dataora']) . "<br>";
    $template->assign_block_vars('download_list', array(

                 'DOWNLOAD_USER'      => $row['user_id'],
                 'DOWNLOAD_ATTACH'     => $row['attach_id'],
                 'DOWNLOAD_DATAORA'     => date('d.m.Y H:i',$row['dataora'])
              ));
        }
//   $template->set_filenames(array(
//   'body' => 'download_list_body.html')
//);
    ?>
Il file php dovrebbe visualizzarti direttamente il risultato.

claxcian
Utente
Utente
Messaggi: 17
Iscritto il: 22/11/2010, 21:40
Versione: 3.0.8
Server: Windows

Re: Log dei Download

Messaggio da claxcian » 24/11/2010, 18:46

Ho provato con un echo e mi da questo risultato:
Risultato: 1 - 2 - 31.12.1969 19:33
Risultato: 1 - 2 - 31.12.1969 19:33
Risultato: 54 - 2 - 31.12.1969 19:33
Palesemente la data non la legge bene anche se all'interno del archivio le date sono giuste. perchè mai?
Una volta visto che funziona vedo di togliere i commenti e aggiungere il template

Avatar utente
Micogian
Leader Programmatori
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: Log dei Download

Messaggio da Micogian » 24/11/2010, 22:54

Cosa c'è nel campo dataora ?
dovrebbe essercvi un timestamp che il numero dei secondi a partire dal 1/1/1970.
Se hai messo una data è sbagliato, nei DB si usa il timestamp.
Prova a creare un file con questo codice, vedrai come funziona il timestamp:

Codice: Seleziona tutto

<?php

$data_cor = time() ; // timestamp data corrente
$gg = date(d);
$mm = date(m) ;
$aa = date(Y) ;
$min = date(i) ;
$ora = date(H) ;
$time_cor = date(Hi) ;
$data_ini = mktime(0,0,0,$mm,1,$aa); // timestamp alle ore 00 del primo giorno del mese

echo "timestamp corrente = " . $data_cor . "<br>";
echo "timestamp inizio mese = "  . $data_ini . "<br>" ;
echo "Time_cor: " . $time_cor . "<br>" ;
echo date ("d-m-Y H:i", time());
?>
A parte il problema della data le variabili ci sono, prova con il template che ti ho passato, non vorrei che sia necessario il file overall_header per rendere funzionante il phpbb.

claxcian
Utente
Utente
Messaggi: 17
Iscritto il: 22/11/2010, 21:40
Versione: 3.0.8
Server: Windows

Re: Log dei Download

Messaggio da claxcian » 24/11/2010, 23:17

Dopo Tentativi sono arrivato ad un buon punto ho fatto anche la query, solo che vedo il risultato con echo e basta.
Ecco il codice:

Codice: Seleziona tutto

     <?php
    /*
    * connect to phpBB
    */
    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);
    include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

    /*
    * session management
    */
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

        $sql = "SELECT " . MAN_DOWNLOAD_TABLE . ".user_id, " . MAN_DOWNLOAD_TABLE . ".attach_id, " . MAN_DOWNLOAD_TABLE . ".dataora, " . USERS_TABLE . ".username," . ATTACHMENTS_TABLE .".real_filename
            FROM " . MAN_DOWNLOAD_TABLE . ", " . USERS_TABLE . " ," . ATTACHMENTS_TABLE ." 
			WHERE  " . MAN_DOWNLOAD_TABLE . ".user_id = " . USERS_TABLE . ".user_id AND " . MAN_DOWNLOAD_TABLE . ".attach_id=" . ATTACHMENTS_TABLE .".attach_id
			ORDER BY " . MAN_DOWNLOAD_TABLE . ".dataora";
        $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result))
        {
echo "Risultato: " . $row['user_id'] . " | " . $row['attach_id'] . " | " . date('d/m/Y H:i:s', strtotime(substr($row['dataora'], 0, 20))) . " | " . $row['username'] . " | " . $row['real_filename'] . "<br>";
    $template->assign_block_vars('download_list', array(

                 'DOWNLOAD_USER'      => $row['user_id'],
                 'DOWNLOAD_ATTACH'     => $row['attach_id'],
                 'DOWNLOAD_DATAORA'     => date('d/m/Y H:i:s', strtotime(substr($row['dataora'], 0, 20))),
				 'DOWNLOAD_USERNAME'    => $row['username'],
				 'DOWNLOAD_REAL_FILENAME'  => $row['real_filename']
              ));
        }
   $template->set_filenames(array(
   'body' => 'download_list_body.html')
);
    ?>
il risulatato che ottengo è quello giusto e cioe:

Codice: Seleziona tutto

Risultato: 1 | 2 | 23/11/2010 22:11:17 pm | Anonymous | automod-100.zip
Risultato: 1 | 2 | 24/11/2010 16:35:26 pm | Anonymous | automod-100.zip
Risultato: 54 | 2 | 24/11/2010 17:44:47 pm | utente | automod-100.zip
Risultato: 1 | 2 | 24/11/2010 20:09:59 pm | Anonymous | automod-100.zip
Risultato: 2 | 2 | 24/11/2010 20:10:49 pm | claxcian | automod-100.zip
Risultato: 2 | 2 | 24/11/2010 20:11:18 pm | claxcian | automod-100.zip
Ora devo impaginare i risultati
Ho creato il download_list_body.html e l'ho messo nella cartella template.
Ma non esce nessun dato
Per quale motivo?

Avatar utente
Micogian
Leader Programmatori
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: Log dei Download

Messaggio da Micogian » 24/11/2010, 23:53

Intanto la query puoi semplificarla, nel senso che invece di scrivere il nome completo TABELLA_campo usi delle sigle per le tabelle:

Codice: Seleziona tutto

$sql = "SELECT dt.user_id, dt.attach_id, dt.dataora, ut.username, at.real_filename
            FROM " . MAN_DOWNLOAD_TABLE . " dt, " . USERS_TABLE . "  ut," . ATTACHMENTS_TABLE ." at
         WHERE  dt.user_id = ut.user_id 
         AND  dt.attach_id= at.attach_id
         ORDER BY dt.dataora";
Il nome delle tabelle diventa rispettivamente dt, ut e at, molto più semplice.
Comunque non è quello il problema.

Nel file php devi richiamare il file html e questo dovrebbe interpretare le variabili dell'array download_list.
Magari c'è una stupidaggine, una virgola, un apice, un qualcosa che va in errore.

La pagina comunque dovresti vederla, la testata, il corpo (magari vuoto ma presente) e il piede.
Perchè se non vedi niente ci deve essere un errore, se queste cose le vedi ma non vedi i dati è un problema di interpretazioni delle variabili.

EDIT

Mi viene in mente ora, a volte ci sono cose che dai per scontate.
Le pagine si aprono con i file della cache, quindi tutte le modifiche al template non sono aggiornate se non fai un aggiornamento del template nel PCA oppure cancelli i file della cartelal cache (escluso il file htaccess)

claxcian
Utente
Utente
Messaggi: 17
Iscritto il: 22/11/2010, 21:40
Versione: 3.0.8
Server: Windows

Re: Log dei Download

Messaggio da claxcian » 25/11/2010, 10:02

scusate ma dove sbalio
ho messo questo codice al file download_list_body.html nella cartella forum/styles/prosilver/template

Codice: Seleziona tutto

<!-- INCLUDE overall_header.html -->

<!-- INCLUDE overall_footer.html -->
Ma io vedo la pagina bianca, se tolgo l'echo al file php.
Se invece metto l'echo al file php vedo i risultati giusti ma senza formato.
Per quale motivo?

Avatar utente
Micogian
Leader Programmatori
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: Log dei Download

Messaggio da Micogian » 25/11/2010, 11:00

claxcian ha scritto:scusate ma dove sbalio
ho messo questo codice al file download_list_body.html nella cartella forum/styles/prosilver/template

Codice: Seleziona tutto

<!-- INCLUDE overall_header.html -->

<!-- INCLUDE overall_footer.html -->
Ma io vedo la pagina bianca, se tolgo l'echo al file php.
Se invece metto l'echo al file php vedo i risultati giusti ma senza formato.
Per quale motivo?
Perchè forse non hai inserito il riferimento al template da aprire.

Codice: Seleziona tutto

$template->set_filenames(array(
   'body' => 'download_list_body.html')
);
O il template non è nella cartella giusta, la cartella "template" del tuo style.

Prova a creare una Custom Page di questo tipo: un file mod_page.php da mettere nella root del Forum:

Codice: Seleziona tutto

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
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);

$user->setup('viewforum');

if ($user->data['user_id'] == ANONYMOUS)
{
    login_box('', $user->lang['LOGIN']);
}

page_header('pagina di prova');
$prova[1] = "Variabile1" ;
$prova[2] = "Variabile2" ;
$prova[3] = "Variabile3" ;
$prova[4] = "Variabile4" ;
$prova[5] = "Variabile5" ;

for ($i=1; $i < 6; ++$i)
   {
   $template->assign_block_vars('var_list',array(
   'VAR_ID' => $i ,
   'VAR_TEXT' => $prova[$i])
   );
   }
$template->set_filenames(array(
	'body' => 'mod_page_body.html')
);

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
e un template mod_page_body.html da mettere nel Template dello style di default:

Codice: Seleziona tutto

<!-- INCLUDE overall_header.html -->
<div class="forabg">
	<div class="inner"><span class="corners-top"><span></span></span>
		<ul class="topiclist">
			<li class="header">
				<dl class="icon">
					<dt>Titolo</dt>
				</dl>
			</li>
		</ul>
		<ul class="topiclist forums">
		<!-- BEGIN var_list -->
			<li class="row"><span>Risultato: {var_list.VAR_ID} - {var_list.VAR_TEXT}</span></li>
		<!-- END var_list -->
		</ul>
		<span class="corners-bottom"><span></span></span></div>
	</div>
<!-- INCLUDE overall_footer.html -->
e vedi se funziona.
Devi prima cancellare i file della cache, escluso il file htaccess.

Rispondi

Torna a “Richiesta MOD”

Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti