/** * 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); }