function cextras_declarer_champs_apres_les_autres($tables_principales) { include_spip('base/cextras'); return cextras_declarer_tables_principales($tables_principales); }
/** * Cree en base les champs extras demandes * @param $champs : objet ChampExtra ou tableau d'objets ChampExtra */ function creer_champs_extras($champs) { if (!$champs) { return; } if (!is_array($champs)) $champs = array($champs); // on recupere juste les differentes tables a mettre a jour $tables = array(); foreach ($champs as $c){ if ($table = $c->_table_sql) { $tables[$table] = $table; } else { // ici on est bien ennuye, vu qu'on ne pourra pas creer ce champ. extras_log("Aucune table trouvee pour le champs extras ; il ne pourra etre cree :", true); extras_log($c, true); } } if (!$tables) { return false; } // on met a jour les tables trouvees // recharger les tables principales et auxiliaires include_spip('base/serial'); include_spip('base/auxiliaires'); global $tables_principales, $tables_auxiliaires; base_serial($tables_principales); base_auxiliaires($tables_auxiliaires); // inclure les champs extras declares ALORS que le pipeline // n'est pas encore actif : important lorsqu'on active // en meme temps CE2 et un plugin dependant // et non l'un apres l'autre if (!defined('_CHAMPS_EXTRAS_DECLARES')) { include_spip('base/cextras'); $tables_principales = cextras_declarer_tables_principales($tables_principales); } // executer la mise a jour include_spip('base/create'); maj_tables($tables); // pour chaque champ a creer, on verifie qu'il existe bien maintenant ! $trouver_table = charger_fonction('trouver_table','base'); $trouver_table(''); // recreer la description des tables. $retour = true; foreach ($champs as $c){ if ($objet = $c->_objet) { $desc = $trouver_table($objet); if (!isset($desc['field'][$c->champ])) { extras_log("Le champ extra '" . $c->champ . "' sur $objet n'a pas ete cree :(", true); $retour = false; } } else { $retour = false; } } return $retour; }