/** * Liste les champs anormaux par rapport aux définitions de SPIP * * @note * Aucune garantie que $connect autre que la connexion principale fasse quelque chose * * @param string $connect * Nom du connecteur de base de données * @return array * Tableau (table => couples(colonne => description SQL)) */ function extras_champs_anormaux($connect = '') { static $tout = false; if ($tout !== false) { return $tout; } // recuperer les tables et champs de la base de donnees // les vrais de vrai dans la base sql... $tout = extras_base($connect); // recuperer les champs SPIP connus // si certains ne sont pas declares alors qu'ils sont presents // dans la base sql, on pourra proposer de les utiliser comme champs // extras (plugin interface). include_spip('base/objets'); $tables_spip = lister_tables_objets_sql(); // chercher ce qui est different $ntables = array(); $nchamps = array(); // la table doit être un objet editorial $tout = array_intersect_key($tout, $tables_spip); foreach ($tout as $table => $champs) { // la table doit être un objet editorial principal if ($tables_spip[$table]['principale'] == 'oui') { // pour chaque champ absent de la déclaration, on le note dans $nchamps. foreach ($champs as $champ => $desc) { if (!isset($tables_spip[$table]['field'][$champ])) { if (!isset($nchamps[$table])) { $nchamps[$table] = array(); } $nchamps[$table][$champ] = $desc; } } } } if ($nchamps) { $tout = $nchamps; } else { $tout = array(); } return $tout; }
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; } else { $tout = array(); } return $tout; }