Valider 29f18f99 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

declarer_tables_objets_sql fait reference pour la declaration tables_principales :

 - il est possible de declarer directement dans declarer_tables_objets_sql une table_principale, en y indiquant principale=oui et en fournissant desc, key et optionnellement join
- la compatibilite est maintenue avec la declaration via declarer_tables_principales, qui est prise en compte au moment de declarer_tables_objets_sql
- une table principale non decrite et juste renseignee dans le pipeline declarer_tables_objets_sql est auto-renseignee par trouver_table

On ajoute une valeur 'editable' dans declarer_tables_objets_sql qui est auto renseignee a 'oui' mais permet de declarer un objet editorial non editable (exemple type des articles syndiques) donc pas candidat pour y attacher d'autres objets comme les medias. 

Peut etre faudrait-il aussi une propriete 'attachable' : on peut concevoir que les articles syndiques aient une page de visu et qu'on puisse y attacher des mots cles, sans pour autent les rendre editable ?
parent f7ecfe34
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+51 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -24,8 +24,20 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 * @return array|bool
 */
function lister_tables_objets_sql($table_sql=null, $desc=array()){
	static $deja_la = false;
	static $infos_tables = null;
	// prealablement recuperer les tables_principales
	if (is_null($infos_tables)){
		// pas de reentrance (cas base/serial)
		if ($deja_la) return;
		$deja_la = true;
		# recuperer les interfaces (table_titre, table_date)
		include_spip('public/interfaces');
		# recuperer les tables_principales si besoin
		include_spip('base/serial');
		// recuperer les declarations explicites ancienne mode
		// qui servent a completer declarer_tables_objets_sql
		base_serial(&$GLOBALS['tables_principales']);
		$infos_tables = pipeline('declarer_tables_objets_sql',array(
			'spip_articles'=> array(
				'texte_retour' => 'icone_retour_article',
@@ -60,6 +72,24 @@ function lister_tables_objets_sql($table_sql=null, $desc=array()){
		// completer les informations manquantes ou implicites
		foreach($infos_tables as $t=>$infos)
			$infos_tables[$t] = renseigner_table_objet_sql($t,$infos);

		// completer les tables principales
		// avec celles declarees uniquement dans declarer_table_objets_sql
		foreach($infos_tables as $table=>$infos) {
			if (!isset($GLOBALS['tables_principales'][$table])
			  AND isset($infos['principale']) AND $infos['principale']){
				// l'ajouter au tableau
				$GLOBALS['tables_principales'][$table] = array();
				if (isset($infos['field']) AND isset($infos['key']))
					$GLOBALS['tables_principales'][$table] = &$infos;
				else {
					// lire sa definition en base
					$trouver_table = charger_fonction('trouver_table','base');
					$GLOBALS['tables_principales'][$table] = $trouver_table($table);
				}
			}
		}
		$deja_la = false;
	}
	if ($table_sql AND !isset($infos_tables[$table_sql])){
	#	$infos_tables[$table_sql] = renseigner_table_objet_sql($table_sql,$desc);
@@ -91,6 +121,9 @@ function lister_tables_objets_sql($table_sql=null, $desc=array()){
 * info_1_objet
 * info_nb_objets
 *
 * principale
 * editable
 * 
 * titre
 * date
 * champs_versionnes
@@ -123,6 +156,18 @@ function renseigner_table_objet_sql($table_sql,$infos){
	if (!isset($infos['table_objet_surnoms']))
		$infos['table_objet_surnoms'] = array();

	if (!isset($infos['principale']))
		$infos['principale'] = (isset($GLOBALS['tables_principales'][$table_sql])?'oui':false);

	// normaliser pour pouvoir tester en php $infos['principale']?
	// et dans une boucle {principale=oui}
	$infos['principale'] = (($infos['principale'] AND $infos['principale']!='non')?'oui':false);

	// declarer et normaliser pour pouvoir tester en php $infos['editable']?
	// et dans une boucle {editable=oui}
	if (!isset($infos['editable'])) $infos['editable'] = 'oui';
	$infos['editable'] = (($infos['editable'] AND $infos['editable']!='non')?'oui':false);

	if (!isset($infos['url_voir']))
		$infos['url_voir'] = $infos['type'];
	if (!isset($infos['url_edit']))
@@ -159,6 +204,12 @@ function renseigner_table_objet_sql($table_sql,$infos){
	return $infos;
}

function lister_tables_principales(){
	if (!count($GLOBALS['tables_principales'])){
		lister_tables_objets_sql();
	}
	return $GLOBALS['tables_principales'];
}

/**
 * Recenser les surnoms de table_objet
+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -132,7 +132,7 @@ $tables_principales['spip_rubriques'] =
	$tables_principales = pipeline('declarer_tables_principales',$tables_principales);
}

global $tables_principales;
base_serial($tables_principales);
include_spip('base/objets');
$GLOBALS['tables_principales'] = lister_tables_principales();

?>