Notice: Undefined index: news_tablename in /membri/johnrdorazio/SitoFlatnukePersonale/sections/news/functions.php on line 267
function get_news_contents($newsvalues)
{
global $_FN;
static $id_accesskey = 1;
$Table = xmldb_frm("fndatabase", $_FN['news_tablename'], $_FN['datadir'], $_FN['lang'], $_FN['languages']);
function get_news_contents($newsvalues,$context)
{
static $id_accesskey = 1;
$Table = xmldb_frm("fndatabase", $context['news_tablename'], $context['datadir'], $context['lang'], $context['languages']);
get_news_contents($thesevalues,$_FN);
$_FN['news_tablename'] = "thisname";
get_news_contents($thesevalues,$_FN);
La sezione news deve essere modificata nel modo in cui vengono passate le variabili.
Ci sono poi alcune cose derivanti dal porting verso FN-NEXT da ripulire.
Alessandro
Alle lunedᅵ 28 marzo 2011, John D'Orazio ha scritto:
> Ho l'impressione che ci sono dei limiti strutturali nella nuova flatnux,
> credo che ci sia da correggere alcuni modi di costruire le pagine e le
> sezioni. Quando si definiscono le funzioni (sia le funzioni di sistema, sia
> le funzioni di una singola sezione quale la sezione news per esempio),
> tutte le variabili all'interno delle funzioni dovrebbero essere o definite
> all'interno della funzione stessa o passate attraverso i parametri. Non ᅵ
> buon uso utilizzare variabili globali, perchᅵ non ᅵ detto che in altri
> contesti avrai accesso alle stesse variabili globali. Lo stesso vale per
> parametri GET e POST. Una funzione non deve dipendere da una variabile
> globale quale GET o POST, semmai i valori di una variabile GET o POST
> dovrebbe essere passata alla funzione come parametro.
>
> Per fare un esempio concreto:
>
> Sto cercando di creare il blocco "newstitles" per la nuova flatnux. Faccio
> l'include del file delle funzioni delle news, e subito mi esce un errore:
>
> *Notice*: Undefined index: news_tablename in *
> /membri/johnrdorazio/SitoFlatnukePersonale/sections/news/functions.php* on
> line *267*
>
>
> Se guardiamo il codice di functions.php alla riga 267 (evidenziata in
> giallo):
>
> function get_news_contents($newsvalues)
> {
> global $_FN;
> static $id_accesskey = 1;
> $Table = xmldb_frm("fndatabase", $_FN['news_tablename'], $_FN['datadir'],
> $_FN['lang'], $_FN['languages']);
>
>
> vediamo che si tratta della variabile "$_FN['news_tablename']" e chissᅵ
> dove ᅵ stata definita questa variabile nell'array globale "$_FN".
>
> La funzione "get_news_contents()" non deve fare riferimento
> a "$_FN['news_tablename']" a meno che "$_FN['news_tablename']" non ᅵ stata
> nello stesso file functions.php. Sarebbe molto meglio se invece riceveva
> questi valori attraverso i parametri, cosᅵ come riceve i parametri
> "$newsvalues". Si potrebbe fare per esempio una cosa del genere:
>
> function get_news_contents($newsvalues,$context)
> {
> static $id_accesskey = 1;
> $Table = xmldb_frm("fndatabase", $context['news_tablename'],
> $context['datadir'], $context['lang'], $context['languages']);
>
> Poi quando viene chiamata la funzione "get_news_contents" la si puᅵ
> chiamare passandogli il contesto globale:
>
> get_news_contents($thesevalues,$_FN);
>
>
> Qui supponiamo che $_FN['news_tablename'] ᅵ stata definita appena prima di
> chiamare la funzione:
>
> $_FN['news_tablename'] = "thisname";
> get_news_contents($thesevalues,$_FN);
>
>
> Allora la struttura diventa piᅵ logica, pulita, indipendente... Penso che
> non dobbiamo confondere troppo il contesto globale con quello locale,
> altrimenti diventa una ragnatela dalla quale non si esce piᅵ...