Forum->Flatnux->complimenti configurazione blocchi flatnux-NEXT 14-10-2011
  
Benvenuto Sconosciuto Registrati Aiuto383 Utenti

Utente Messaggio


speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Mercoledì 19 Ottobre 2011 - 10:24

Re: complimenti configurazione blocchi flatnux-NEXT 14-10-2011:
inizialmente avevo fatto in modo che se cambiavo un valore nel config.php FN se ne accorgeva e aggiornava la tabella solo di quel valore modificato lasciando inalterati gli altri.
Questo però mi aveva generato più problemi del previsto perchè mi venivano resettate le impostazioni di tutte le sezioni che erano riferite a quel modulo e dovevo riconfigurarle tutte a mano.


in FN_LoadVarsFromTable


if ($old['defaultvalue'] != $v)
{
$Table->UpdateRecord(array("varname"=>$k,"defaultvalue"=>$v));
}

in origine era così:

if ($old['defaultvalue'] != $v)
{
$Table->UpdateRecord(array("varname"=>$k,"defaultvalue"=>$v,"varvalue"=>$v));
}

un opzione potrebbe essere di aggiungere un flag che mi dice se il valore era stato modificato almeno una volta e in quel caso evitare di aggiornarlo


Alex





speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Mercoledì 19 Ottobre 2011 - 10:45

Re: complimenti configurazione blocchi flatnux-NEXT 14-10-2011:



/**
*
* @param string $var
* @param string $tablename
* @param string $ignore
*/
function FN_LoadVarsFromTable(&$var,$tablename,$ignore=array())
{
$Table=FN_XmlTable($tablename);

$vars_in_table_assoc=FN_GetVarsFromTable($tablename);
if (is_array($var))
{
//---clear obsolete ------------------------------------------------->
foreach ($vars_in_table_assoc as $k=>$v)
{
if (!isset($var[$k]))
{
$Table->DelRecord($k);
}
}
//---clear obsolete -------------------------------------------------<
foreach ($var as $k=>$v)
{
if (in_array($k,$ignore))
continue;
$old=$Table->GetRecordByPrimaryKey($k);
if (!isset($old['defaultvalue']))
{
$Table->InsertRecord(array("varname"=>$k,"varvalue"=>$v,"defaultvalue"=>$v));
}
else
{
if ($old['defaultvalue'] != $v)
{
if ($old['defaultvalue'] == $old['varvalue']) // se era a default lo aggiorno col nuovo valore di default
{
$Table->UpdateRecord(array("varname"=>$k,"defaultvalue"=>$v,"varvalue"=>$v));
}
else //se era stato cambiato lo mantengo
{
$Table->UpdateRecord(array("varname"=>$k,"defaultvalue"=>$v));
}
}
}
if (isset($old['varvalue']))
$var[$k]=$old['varvalue'];
}
}
return $var;
}







johndorazio

0 Livello 0 10

levellevellevellevellevellevellevellevellevellevel
profile mail home
Sabato 22 Ottobre 2011 - 19:36

Re: complimenti configurazione blocchi flatnux-NEXT 14-10-2011:
Ho dato uno sguardo al codice ma non ho abbastanza la visione dell'insieme per sapere che cosa viene chiamato quando e dove...

Vediamo qual'è il "workflow".Le variabili memorizzate nella tabella sono memorizzate per la specifica sezione?

Io immaginerei così il disegno:

1) Modulo contiene config.php, le cui valori però non sono ancora memorizzate in alcuna tabella;

2) Una sezione si associa al modulo, e i files del modulo vengono copiati nella sezione, tra cui il config.php. A questo punto vengono memorizzati i valori predefiniti nella tabella, tenendo conto della rispettiva sezione. (Se c'è un'unica tabella con tutti i valori di configurazione di tutto il sito, allora ci vuole un campo che indica la sezione a cui appartengono i valori. Se invece c'è una tabella distinta per ogni sezione, si può tenere conto con il nome della tabella...)

3) L'amministratore del sito modifica, attraverso l'interfaccia di flatnux, i settaggi di una sezione (o blocco che sia). Con un callback vengono aggiornati i rispettivi valori nella tabella di quella sezione (o blocco che sia).

4) Ogni volta che si apre una sezione (o blocco), si verifica se i valori del config.php di quella sezione corrispondono o meno ai valori nella tabella corrispondente. Se sono diversi (sono stati modificati manualmente via ftp), la tabella viene aggiornata.

Mi chiedo però: è utile avere sia il file config.php sia una tabella per i valori di configurazione? In questo modo infatti vengono raddoppiate le operazioni, rallentando un po' il sito.

Ci sono allora due ipotesi valide:

--> Si utilizza un file di configurazione "config.php" per ogni sezione o blocco, e si opera soltanto su quel file (come era in Flatnux 2011).

--> Si utilizza il config.php soltanto per impacchettare un modulo, per indicare i settaggi del modulo con i relativi valori predefiniti. Poi quando una sezione o un blocco si associa a questo modulo, i valori del config.php vengono memorizzati in una tabella specificamente per quella data sezione o blocco. Il config.php non viene nemmeno copiato nella cartella della sezione o del blocco, perché si opera tutto sulle tabelle. Se qualcuno vuole modificare manualmente un valore via ftp, dovrà accedere al file della tabella e modificarlo lì.

____________________________
"The whole of science is nothing more than a refinement of everyday thinking." (Albert Einstein)



speleoalex

0 Livello 10 10

levellevellevellevellevellevellevellevellevellevel
profile mail
Sabato 22 Ottobre 2011 - 21:35

Re: complimenti configurazione blocchi flatnux-NEXT 14-10-2011:

Ho dato uno sguardo al codice ma non ho abbastanza la visione dell'insieme per sapere che cosa viene chiamato quando e dove...

Vediamo qual'è il "workflow".Le variabili memorizzate nella tabella sono memorizzate per la specifica sezione?

Io immaginerei così il disegno:

1) Modulo contiene config.php, le cui valori però non sono ancora memorizzate in alcuna tabella;

2) Una sezione si associa al modulo, e i files del modulo vengono copiati nella sezione, tra cui il config.php. A questo punto vengono memorizzati i valori predefiniti nella tabella, tenendo conto della rispettiva sezione. (Se c'è un'unica tabella con tutti i valori di configurazione di tutto il sito, allora ci vuole un campo che indica la sezione a cui appartengono i valori. Se invece c'è una tabella distinta per ogni sezione, si può tenere conto con il nome della tabella...)

3) L'amministratore del sito modifica, attraverso l'interfaccia di flatnux, i settaggi di una sezione (o blocco che sia). Con un callback vengono aggiornati i rispettivi valori nella tabella di quella sezione (o blocco che sia).

4) Ogni volta che si apre una sezione (o blocco), si verifica se i valori del config.php di quella sezione corrispondono o meno ai valori nella tabella corrispondente. Se sono diversi (sono stati modificati manualmente via ftp), la tabella viene aggiornata.

Mi chiedo però: è utile avere sia il file config.php sia una tabella per i valori di configurazione? In questo modo infatti vengono raddoppiate le operazioni, rallentando un po' il sito.

Ci sono allora due ipotesi valide:

--> Si utilizza un file di configurazione "config.php" per ogni sezione o blocco, e si opera soltanto su quel file (come era in Flatnux 2011).

--> Si utilizza il config.php soltanto per impacchettare un modulo, per indicare i settaggi del modulo con i relativi valori predefiniti. Poi quando una sezione o un blocco si associa a questo modulo, i valori del config.php vengono memorizzati in una tabella specificamente per quella data sezione o blocco. Il config.php non viene nemmeno copiato nella cartella della sezione o del blocco, perché si opera tutto sulle tabelle. Se qualcuno vuole modificare manualmente un valore via ftp, dovrà accedere al file della tabella e modificarlo lì.





Io sarei per la seconda ipotesi. L'ultima vessione fa anche pulizia delle variabili inutilizzate. Tanto le configurazioni sono volutamente in files xml unici facilmente editabili anche a mano.
Ho anche gestito allo stesso modo i config dei blocchi.


Alessandro




 [1] [2]