// Liste les champs anormaux par rapport aux definitions de SPIP // (aucune garantie que $connect autre que la connexion principale fasse quelque chose) function extras_champs_anormaux($connect='') { // recuperer les tables et champs accessibles $tout = extras_base($connect); // recuperer les champs SPIP connus include_spip('base/auxiliaires'); include_spip('base/serial'); $tables_spip = array_merge($GLOBALS['tables_principales'], $GLOBALS['tables_auxiliaires']); // chercher ce qui est different $ntables = array(); $nchamps = array(); foreach ($tout as $table => $champs) { if (!isset($tables_spip[$table]['field'])) { $nchamps[$table] = $champs; } else { foreach($champs as $champ => $desc) { if (!isset($tables_spip[$table]['field'][$champ])) { $nchamps[$table][$champ] = $desc; } } } } unset($tout); if($nchamps) { $tout = $nchamps; } return $tout; } // etablit la liste de tous les champs de toutes les tables du connect donne // ignore la table 'spip_test' function extras_base($connect='') { $champs = array(); foreach (extras_tables($connect) as $table) { if ($table != 'spip_test') { $champs[$table] = extras_champs($table, $connect); } } return $champs; } // liste les tables dispos ans la connexion $connect function extras_tables($connect='') { $a = array(); if ($s = sql_showbase(null, $connect)) { while ($t = sql_fetch($s, $connect)) { $a[] = array_pop($t); } } return $a; } // liste les champs dispos ans la table $table de la connexion $connect function extras_champs($table, $connect) { $desc = sql_showtable($table, null, $connect); if (is_array($desc['field'])) { return $desc['field']; } else { return array(); } }