Skip to content
Extraits de code Groupes Projets
Valider 99569473 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"ajout d'un champ 'impt' sur la table meta pour gerer des interdictions de...

"ajout d'un champ 'impt' sur la table meta pour gerer des interdictions de remplacement lors d'une restauration du dump.
Lors de l'upgrade de la base, les metas liees au serveur ou au systeme de fichier sont positionnees a non (non importable)
Les autres sont a oui par defaut
Le mecanisme est generique est pourra etre applique a n'importe quelle table
"
parent aa290d16
Branches
Étiquettes
Aucune requête de fusion associée trouvée
......@@ -167,6 +167,7 @@ $spip_mots_documents_key = array(
$spip_meta = array(
"nom" => "VARCHAR (255) NOT NULL",
"valeur" => "text DEFAULT ''",
"impt" => "ENUM('non', 'oui') DEFAULT 'oui' NOT NULL",
"maj" => "TIMESTAMP");
$spip_meta_key = array(
......
......@@ -1222,7 +1222,14 @@ function maj_base($version_cible = 0) {
spip_query("ALTER IGNORE TABLE spip_documents_rubriques DROP INDEX id_rubrique");
maj_version('1.920');
}
if (upgrade_vers(1.921, $version_installee, $version_cible)) {
spip_query("ALTER TABLE spip_meta ADD impt ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER valeur");
$meta_serveur = array('version_installee','adresse_site','alea_ephemere_ancien','alea_ephemere','alea_ephemere_date','langue_site','langues_proposees','date_calcul_rubriques','derniere_modif','optimiser_table','drapeau_edition','creer_preview','taille_preview','creer_htpasswd','creer_htaccess','gd_formats_read','gd_formats',
'netpbm_formats','formats_graphiques','image_process','plugin_header','plugin');
foreach($meta_serveur as $nom)
spip_query("UPDATE spip_meta SET impt='non' WHERE nom="._q($nom));
maj_version('1.921');
}
}
?>
......@@ -114,9 +114,16 @@ function inc_import_1_3_dist($lecteur, $request, $gz='fread') {
// http://doc.spip.org/@import_replace
function import_replace($values, $table, $desc, $request) {
if (!spip_query("REPLACE $table (" . join(',',array_keys($values)) . ') VALUES (' .join(',',array_map('_q', $values)) . ')')) {
$GLOBALS['erreur_restauration'] = spip_sql_error();
}
if (!isset($desc['field']['impt'])) // pas de champ de gestion d'import
if (!spip_query("REPLACE $table (" . join(',',array_keys($values)) . ') VALUES (' .join(',',array_map('_q', $values)) . ')')) {
$GLOBALS['erreur_restauration'] = spip_sql_error();
}
else {
// la table contient un champ 'impt' qui permet de gerer des interdiction d'overwrite par import
// impt=oui : la ligne est surchargeable par import
// impt=non : la ligne ne doit pas etre ecrasee par un import
}
}
// http://doc.spip.org/@import_lire_champs
......
......@@ -27,11 +27,17 @@ function lire_metas() {
}
// http://doc.spip.org/@ecrire_meta
function ecrire_meta($nom, $valeur) {
function ecrire_meta($nom, $valeur, $importable = NULL) {
if (strlen($nom)){
$GLOBALS['meta'][$nom] = $valeur;
if (!_FILE_CONNECT && !@file_exists(_FILE_CONNECT_INS .'.php')) return;
spip_query("REPLACE spip_meta (nom, valeur) VALUES ('$nom', " . _q($valeur) . " )");
// conserver la valeur de impt si existante
if ($importable === NULL){
$importable = 'oui';
if ($row = spip_fetch_array(spip_query("SELECT impt FROM spip_meta WHERE nom="._q($nom))))
$importable = $row['impt'];
}
spip_query("REPLACE spip_meta (nom, valeur, impt) VALUES ("._q($nom).", " . _q($valeur) . ","._q($importable)." )");
}
}
......
......@@ -284,7 +284,7 @@ $tables_des_serveurs_sql['localhost'] = &$tables_principales;
// (utilise pour les modifs de la base de donnees)
// version de la base
$spip_version = 1.920;
$spip_version = 1.921;
// version de spip en chaine
// et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter