Esempio n. 1
0
/**
 * 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;
}
Esempio n. 2
0
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;
}