D4rkAng3l
13-06-2004, 23:02
Ciao,
stò tentando di capire come poter modificare questo script (è solo un blocco di MdPro) in modo da fargli visualizzare solo le recensioni appartenenti ad una determinata categoria (il blocco è per un modulo chiamato ProdReview ma questo non dovrebbe influire...)
In teoria è una cosa semplicissima ma non conoscendo bene l'sql avrei bisogno di una mano....
Da quello che ho capito utilizzando PhpMyAdmin nel mio db ho una tabella chiamata ita_prodreviews dove ci sono tutti gli album e i demo recensiti messi in ordine di data....e c'è un campo chiamato pn_category che puà assumere il valore 0 o 1 (1 se si tratta di un demo, 0 se si tratta di un album).
Come posso dirgli di visualizzare solo le recensioni dei demo per esempio? Così facendo potrei installare due blocchi distinti uno per gli album e l'altro per i demo così da dividere in 2 box distinti le recensioni dei demo da quelle degli album
<?php
// $Id: top10.php,v 1.4 2003/04/27 19:47:52 sybalsky Exp $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of file: Jim McDonald
// Purpose of file: Show top10 items in prodreviews
// ----------------------------------------------------------------------
$GLOBALS['ModName'] = "ProdReviews";
include_once( 'modules/ProdReviews/pr-util.php');
/**
* initialise block
*/
function prodreviews_top10block_init()
{
// Security
pnSecAddSchema('ProdReviews:Top10block:', 'Block title::');
}
/**
* get information on block
*/
function prodreviews_top10block_info()
{
// Values
return array('text_type' => 'Top-10',
'module' => 'ProdReviews',
'text_type_long' => 'Show top-10 reviews',
'allow_multiple' => true,
'form_content' => false,
'form_refresh' => false,
'show_preview' => true);
}
/**
* display block
*/
function prodreviews_top10block_display($blockinfo)
{
// Security check
if (!pnSecAuthAction(0,
'ProdReviews:Top10block:',
"$blockinfo[title]::",
ACCESS_READ)) {
return;
}
// Get variables from content block
$vars = pnBlockVarsFromContent($blockinfo['content']);
// Defaults
if (empty($vars['numitems'])) {
$vars['numitems'] = 10;
}
// $header = $blockinfo['title'];
if ( empty($vars['source']) )
{
$vars['source'] = 'recent';
}
// Database information
pnModDBInfoLoad('ProdReviews');
list($dbconn) = pnDBGetConn();
$pntable =pnDBGetTables();
$prodreviewstable = $pntable['prodreviews'];
$prodreviewscolumn = &$pntable['prodreviews_column'];
// Query
switch ($vars['source'])
{
case 'recent':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[date] desc";
break;
case 'most-read':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[hits] desc";
break;
case 'helpful':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
ifnull($prodreviewscolumn[useful]/$prodreviewscolumn[scorers], -1) as xx
FROM $prodreviewstable
ORDER by xx desc";
break;
case 'best-rated':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[score] desc";
break;
case 'recent-comment':
$prcomtable = $pntable['prodreviews_comments'];
$prcomcols = &$pntable['prodreviews_comments_column'];
$sql = "SELECT DISTINCT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable LEFT JOIN $prcomtable
ON $prodreviewscolumn[id]=$prcomcols[rid]
ORDER by $prcomcols[date] desc";
break;
}
$result = $dbconn->SelectLimit($sql, $vars['numitems']);
if ($dbconn->ErrorNo() != 0) {
error_log("Error selecting top-10 items: " . $dbconn->ErrorMsg());
return;
}
if ($result->EOF) {
// No items to show, so don't show the block.
return;
}
// Create output object
$output = new pnHTML();
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->SetInputMode(_PNH_PARSEINPUT);
// Display each item, permissions permitting
for (; !$result->EOF; $result->MoveNext()) {
list($tid, $name, $score, $date, $cover) = $result->fields;
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->Text("<div class=\"table\"><center>");
$output->SetInputMode(_PNH_PARSEINPUT);
if (pnSecAuthAction(0,
'ProdReviews::',
"$name::$tid",
ACCESS_OVERVIEW)) {
if (pnSecAuthAction(0,
'ProdReviews::',
"$name::$tid",
ACCESS_READ)) {
$output->URL(pnModURL('ProdReviews',
'user',
'showcontent',
array('id' => $tid)),
$name);
} else {
$output->Text($name);
}
$output->SetInputMode(_PNH_VERBATIMINPUT);
switch ( $vars['additional'] )
{
case 'score': $output->Text("<br><br><img src=modules/ProdReviews/images/".$cover." alt=\"cover\" width=\"100\" height=\"100\" /><br><br>".display_score($score)."<hr noshade /></center></div>");
break;
case 'date': $output->Text(" <span class=\"pn-sub\">(".date(_TOP10ADDFMT, strtotime($date)).")</span>");
break;
default: break;
}
$output->SetInputMode(_PNH_PARSEINPUT);
$output->Linebreak();
}
}
$date = date("Y-m-d H:i:s", time());
// Populate block info and pass to theme
$blockinfo['content'] = $output->GetOutput();
return themesideblock($blockinfo);
}
/**
* modify block settings
*/
function prodreviews_top10block_modify($blockinfo)
{
// Create output object
$output = new pnHTML();
// Get current content
$vars = pnBlockVarsFromContent($blockinfo['content']);
// Defaults
if (empty($vars['numitems'])) {
$vars['numitems'] = 10;
}
if (empty( $vars['source'] ) )
{
$vars['source'] = 'recent'; // default source is most-recent reviews.
}
if (empty( $vars['additional'] ) )
{
$vars['additional'] = 'None'; // default is to show only title.
}
// Create row
$row = array(); // Top how-many items
$row2 = array(); // Top what-kind-of items
$row3 = array(); // Additional field(s??) to show
$output->SetOutputMode(_PNH_RETURNOUTPUT);
$row[] = $output->Text(_NUMITEMS);
$row[] = $output->FormText('numitems',
pnVarPrepForDisplay($vars['numitems']),
5,
5);
$row2[] = $output->Text(_TOP10SELECTHOW);
$row2[] = $output->FormSelectMultiple('source',
array(array('id'=>'recent', 'name'=>_TOP10SELRECENT),
array('id'=> 'most-read', 'name'=>_TOP10SELHITS),
array('id'=>'helpful', 'name'=>_TOP10SELHELP),
array('id'=>'best-rated', 'name'=> _TOP10SELRATED),
array('id'=>'recent-comment', 'name'=> _TOP10SELCOMM)),
0, 0, $vars['source'] );
$row3[] = $output->Text(_TOP10ADDITIONALFIELDS);
$row3[] = $output->FormSelectMultiple('additional',
array(array('id'=>'None', 'name'=>_TOP10ADDNONE),
array('id'=> 'score', 'name'=>_TOP10ADDSCORE),
array('id'=>'date', 'name'=>_TOP10ADDDATE)),
0, 0, $vars['additional'] );
$output->SetOutputMode(_PNH_KEEPOUTPUT);
// Add row
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->TableAddRow($row, 'left');
$output->TableAddRow($row2, 'left');
$output->TableAddRow($row3, 'left');
$output->SetInputMode(_PNH_PARSEINPUT);
// Return output
return $output->GetOutput();
}
/**
* update block settings
*/
function prodreviews_top10block_update($blockinfo)
{
$vars['numitems'] = pnVarCleanFromInput('numitems');
$vars['source'] = pnVarCleanFromInput('source');
$vars['additional'] = pnVarCleanFromInput('additional');
$blockinfo['content'] = pnBlockVarsToContent($vars);
return $blockinfo;
}
?>
stò tentando di capire come poter modificare questo script (è solo un blocco di MdPro) in modo da fargli visualizzare solo le recensioni appartenenti ad una determinata categoria (il blocco è per un modulo chiamato ProdReview ma questo non dovrebbe influire...)
In teoria è una cosa semplicissima ma non conoscendo bene l'sql avrei bisogno di una mano....
Da quello che ho capito utilizzando PhpMyAdmin nel mio db ho una tabella chiamata ita_prodreviews dove ci sono tutti gli album e i demo recensiti messi in ordine di data....e c'è un campo chiamato pn_category che puà assumere il valore 0 o 1 (1 se si tratta di un demo, 0 se si tratta di un album).
Come posso dirgli di visualizzare solo le recensioni dei demo per esempio? Così facendo potrei installare due blocchi distinti uno per gli album e l'altro per i demo così da dividere in 2 box distinti le recensioni dei demo da quelle degli album
<?php
// $Id: top10.php,v 1.4 2003/04/27 19:47:52 sybalsky Exp $
// ----------------------------------------------------------------------
// POST-NUKE Content Management System
// Copyright (C) 2001 by the Post-Nuke Development Team.
// http://www.postnuke.com/
// ----------------------------------------------------------------------
// Based on:
// PHP-NUKE Web Portal System - http://phpnuke.org/
// Thatware - http://thatware.org/
// ----------------------------------------------------------------------
// LICENSE
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License (GPL)
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// To read the license please visit http://www.gnu.org/copyleft/gpl.html
// ----------------------------------------------------------------------
// Original Author of file: Jim McDonald
// Purpose of file: Show top10 items in prodreviews
// ----------------------------------------------------------------------
$GLOBALS['ModName'] = "ProdReviews";
include_once( 'modules/ProdReviews/pr-util.php');
/**
* initialise block
*/
function prodreviews_top10block_init()
{
// Security
pnSecAddSchema('ProdReviews:Top10block:', 'Block title::');
}
/**
* get information on block
*/
function prodreviews_top10block_info()
{
// Values
return array('text_type' => 'Top-10',
'module' => 'ProdReviews',
'text_type_long' => 'Show top-10 reviews',
'allow_multiple' => true,
'form_content' => false,
'form_refresh' => false,
'show_preview' => true);
}
/**
* display block
*/
function prodreviews_top10block_display($blockinfo)
{
// Security check
if (!pnSecAuthAction(0,
'ProdReviews:Top10block:',
"$blockinfo[title]::",
ACCESS_READ)) {
return;
}
// Get variables from content block
$vars = pnBlockVarsFromContent($blockinfo['content']);
// Defaults
if (empty($vars['numitems'])) {
$vars['numitems'] = 10;
}
// $header = $blockinfo['title'];
if ( empty($vars['source']) )
{
$vars['source'] = 'recent';
}
// Database information
pnModDBInfoLoad('ProdReviews');
list($dbconn) = pnDBGetConn();
$pntable =pnDBGetTables();
$prodreviewstable = $pntable['prodreviews'];
$prodreviewscolumn = &$pntable['prodreviews_column'];
// Query
switch ($vars['source'])
{
case 'recent':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[date] desc";
break;
case 'most-read':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[hits] desc";
break;
case 'helpful':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
ifnull($prodreviewscolumn[useful]/$prodreviewscolumn[scorers], -1) as xx
FROM $prodreviewstable
ORDER by xx desc";
break;
case 'best-rated':
$sql = "SELECT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable
ORDER by $prodreviewscolumn[score] desc";
break;
case 'recent-comment':
$prcomtable = $pntable['prodreviews_comments'];
$prcomcols = &$pntable['prodreviews_comments_column'];
$sql = "SELECT DISTINCT $prodreviewscolumn[id],
$prodreviewscolumn[title], $prodreviewscolumn[score], $prodreviewscolumn[date], $prodreviewscolumn[cover]
FROM $prodreviewstable LEFT JOIN $prcomtable
ON $prodreviewscolumn[id]=$prcomcols[rid]
ORDER by $prcomcols[date] desc";
break;
}
$result = $dbconn->SelectLimit($sql, $vars['numitems']);
if ($dbconn->ErrorNo() != 0) {
error_log("Error selecting top-10 items: " . $dbconn->ErrorMsg());
return;
}
if ($result->EOF) {
// No items to show, so don't show the block.
return;
}
// Create output object
$output = new pnHTML();
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->SetInputMode(_PNH_PARSEINPUT);
// Display each item, permissions permitting
for (; !$result->EOF; $result->MoveNext()) {
list($tid, $name, $score, $date, $cover) = $result->fields;
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->Text("<div class=\"table\"><center>");
$output->SetInputMode(_PNH_PARSEINPUT);
if (pnSecAuthAction(0,
'ProdReviews::',
"$name::$tid",
ACCESS_OVERVIEW)) {
if (pnSecAuthAction(0,
'ProdReviews::',
"$name::$tid",
ACCESS_READ)) {
$output->URL(pnModURL('ProdReviews',
'user',
'showcontent',
array('id' => $tid)),
$name);
} else {
$output->Text($name);
}
$output->SetInputMode(_PNH_VERBATIMINPUT);
switch ( $vars['additional'] )
{
case 'score': $output->Text("<br><br><img src=modules/ProdReviews/images/".$cover." alt=\"cover\" width=\"100\" height=\"100\" /><br><br>".display_score($score)."<hr noshade /></center></div>");
break;
case 'date': $output->Text(" <span class=\"pn-sub\">(".date(_TOP10ADDFMT, strtotime($date)).")</span>");
break;
default: break;
}
$output->SetInputMode(_PNH_PARSEINPUT);
$output->Linebreak();
}
}
$date = date("Y-m-d H:i:s", time());
// Populate block info and pass to theme
$blockinfo['content'] = $output->GetOutput();
return themesideblock($blockinfo);
}
/**
* modify block settings
*/
function prodreviews_top10block_modify($blockinfo)
{
// Create output object
$output = new pnHTML();
// Get current content
$vars = pnBlockVarsFromContent($blockinfo['content']);
// Defaults
if (empty($vars['numitems'])) {
$vars['numitems'] = 10;
}
if (empty( $vars['source'] ) )
{
$vars['source'] = 'recent'; // default source is most-recent reviews.
}
if (empty( $vars['additional'] ) )
{
$vars['additional'] = 'None'; // default is to show only title.
}
// Create row
$row = array(); // Top how-many items
$row2 = array(); // Top what-kind-of items
$row3 = array(); // Additional field(s??) to show
$output->SetOutputMode(_PNH_RETURNOUTPUT);
$row[] = $output->Text(_NUMITEMS);
$row[] = $output->FormText('numitems',
pnVarPrepForDisplay($vars['numitems']),
5,
5);
$row2[] = $output->Text(_TOP10SELECTHOW);
$row2[] = $output->FormSelectMultiple('source',
array(array('id'=>'recent', 'name'=>_TOP10SELRECENT),
array('id'=> 'most-read', 'name'=>_TOP10SELHITS),
array('id'=>'helpful', 'name'=>_TOP10SELHELP),
array('id'=>'best-rated', 'name'=> _TOP10SELRATED),
array('id'=>'recent-comment', 'name'=> _TOP10SELCOMM)),
0, 0, $vars['source'] );
$row3[] = $output->Text(_TOP10ADDITIONALFIELDS);
$row3[] = $output->FormSelectMultiple('additional',
array(array('id'=>'None', 'name'=>_TOP10ADDNONE),
array('id'=> 'score', 'name'=>_TOP10ADDSCORE),
array('id'=>'date', 'name'=>_TOP10ADDDATE)),
0, 0, $vars['additional'] );
$output->SetOutputMode(_PNH_KEEPOUTPUT);
// Add row
$output->SetInputMode(_PNH_VERBATIMINPUT);
$output->TableAddRow($row, 'left');
$output->TableAddRow($row2, 'left');
$output->TableAddRow($row3, 'left');
$output->SetInputMode(_PNH_PARSEINPUT);
// Return output
return $output->GetOutput();
}
/**
* update block settings
*/
function prodreviews_top10block_update($blockinfo)
{
$vars['numitems'] = pnVarCleanFromInput('numitems');
$vars['source'] = pnVarCleanFromInput('source');
$vars['additional'] = pnVarCleanFromInput('additional');
$blockinfo['content'] = pnBlockVarsToContent($vars);
return $blockinfo;
}
?>