/**
 * Chargement des donnees du formulaire
 *
 * @param string $type
 * @param int $id
 * @return array
 */
function formulaires_editer_composition_objet_charger($type,$id){
	$valeurs = array();
	$table_objet_sql = table_objet_sql($type);
	$id_table_objet = id_table_objet($type);
	$valeurs[$id_table_objet] = intval($id);

	$valeurs['editable'] = true;
	$valeurs['id'] = "$type-$id";
	$valeurs['id_objet'] = $id;
	$valeurs['objet'] = $type;

	$row = sql_fetsel('composition,composition_lock',$table_objet_sql,"$id_table_objet=".intval($id));
	$valeurs['composition'] = $row['composition'];
	$valeurs['composition_lock'] = $row['composition_lock'];
	
	if ($type=='rubrique')
		$valeurs['composition_branche_lock'] = sql_getfetsel('composition_branche_lock',$table_objet_sql,"$id_table_objet=".intval($id));
	
	$valeurs['composition_heritee'] = compositions_heriter($type, $id);
	$valeurs['verrou_branche'] = compositions_verrou_branche($type, $id);
	$valeurs['verrou_branche'] = false;
	$valeurs['composition_verrouillee'] = compositions_verrouiller($type, $id);

	$valeurs['compositions'] = compositions_lister_disponibles($type);
	$valeurs['_compositions'] = reset($valeurs['compositions']); // on ne regarde qu'un seul type
	if (is_array($valeurs['_compositions']) AND !isset($valeurs['_compositions'][''])){
		$valeurs['_compositions'] = array_merge(
			array(''=>array('nom'=>_T('compositions:composition_defaut'),'description'=>'','icon'=>'','configuration'=>'')),
			$valeurs['_compositions']
		);
	}
	
	// Si on herite d'une composition
	// On modifie le tableau des compositions
	if ($valeurs['composition_heritee'] AND $valeurs['composition_heritee'] != '-') {
		$compo_defaut = $valeurs['_compositions'][$valeurs['composition_heritee']];
		$compo_vide = $valeurs['_compositions'][''];
		unset($valeurs['_compositions'][$valeurs['composition_heritee']]);
		unset($valeurs['_compositions']['']);
		$valeurs['_compositions'] = array_merge(
			array('' => $compo_defaut,'-' => $compo_vide),
			$valeurs['_compositions']
		);
	}
	
	$valeurs['_hidden'] = "<input type='hidden' name='$id_table_objet' value='$id' />";

	if (!autoriser('styliser',$type,$id))
		$valeurs['editable'] = false;

	return $valeurs;
}
/**
 * Renvoie la composition qui s'applique a un objet
 * en tenant compte, le cas echeant, de la composition heritee
 * si etoile=true on renvoi directment le champ sql
 *
 * @param string $type
 * @param integer $id
 * @param string $serveur
 * @param bool $etoile
 * @return string
 */
function compositions_determiner($type, $id, $serveur='', $etoile = false){
	static $composition = array();
	$id = intval($id);

	if (isset($composition[$etoile][$serveur][$type][$id]))
		return $composition[$etoile][$serveur][$type][$id];

	include_spip('base/abstract_sql');
	$table = table_objet($type);
	$table_sql = table_objet_sql($type);
	$_id_table = id_table_objet($type);

	$retour = '';

	$trouver_table = charger_fonction('trouver_table', 'base');
	$desc = $trouver_table($table,$serveur);
	if (isset($desc['field']['composition']) AND $id){
		$select = "composition";

	$heritage = compositions_recuperer_heritage($type);
	if (isset($desc['field'][$heritage['nom_id_parent']]))
		$select .= ', '.$heritage['nom_id_parent'].' as id_parent';

	$row = sql_fetsel($select, $table_sql, "$_id_table=".intval($id), '', '', '', '', $serveur);
	if ($row['composition'] != '')
		$retour = $row['composition'];
	elseif (!$etoile
	  AND isset($row['id_parent'])
	  AND $row['id_parent'])
		$retour = compositions_heriter($type, $id, $row['id_parent'], $serveur);
	}
	return $composition[$etoile][$serveur][$type][$id] = (($retour == '-') ? '' : $retour);
}