Changeset 48981 in spip-zone
- Timestamp:
- Jun 21, 2011, 9:49:59 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/compositions/compositions_fonctions.php
r48979 r48981 173 173 */ 174 174 function compositions_determiner($type, $id, $serveur='', $etoile = false){ 175 static $composition = array(); 176 177 if (isset($composition[$etoile][$serveur][$type][$id])) 178 return $composition[$etoile][$serveur][$type][$id]; 179 175 180 include_spip('base/abstract_sql'); 176 181 $table = table_objet($type); … … 183 188 $desc = $trouver_table($table,$serveur); 184 189 if (isset($desc['field']['composition']) AND $id){ 185 $ composition = sql_getfetsel('composition', $table_sql, "$_id_table=".intval($id), '', '', '', '', $serveur);186 if ( $composition != '')187 $ retour = $composition;188 elseif (!$etoile AND isset($desc['field']['id_rubrique'])) {189 $_id_rubrique = ($type == 'rubrique') ? 'id_parent' : 'id_rubrique';190 $ id_rubrique = sql_getfetsel($_id_rubrique,$table_sql,"$_id_table=".intval($id),'','','','',$serveur);191 $retour = compositions_heriter($type, $id_rubrique, $serveur);192 }193 else194 $retour = '';195 } 196 return ($retour == '-') ? '' : $retour;190 $select = "composition"; 191 if (isset($desc['field']['id_rubrique'])) 192 $select .= "," . (($type == 'rubrique') ? 'id_parent' : 'id_rubrique as id_parent'); 193 $row = sql_fetsel($select, $table_sql, "$_id_table=".intval($id), '', '', '', '', $serveur); 194 if ($row['composition'] != '') 195 $retour = $row['composition']; 196 elseif (!$etoile 197 AND isset($row['id_parent']) 198 AND $row['id_parent']) 199 $retour = compositions_heriter($type, $row['id_parent'], $serveur); 200 } 201 return $composition[$etoile][$serveur][$type][$id] = (($retour == '-') ? '' : $retour); 197 202 } 198 203 … … 208 213 if ($type=='syndic') $type='site'; //grml 209 214 if (intval($id_rubrique) < 1) return ''; 210 if($infos_rubrique = sql_fetsel(array('id_parent','composition'),'spip_rubriques','id_rubrique='.intval($id_rubrique),'','','','',$serveur)) { 211 if ( 212 $infos_rubrique['composition'] != '' 213 AND $infos = compositions_lister_disponibles('rubrique') 214 AND isset($infos['rubrique'][$infos_rubrique['composition']]) 215 AND isset($infos['rubrique'][$infos_rubrique['composition']]['branche']) 216 AND isset($infos['rubrique'][$infos_rubrique['composition']]['branche'][$type]) 217 ) 218 return $infos['rubrique'][$infos_rubrique['composition']]['branche'][$type]; 219 else 220 return compositions_heriter($type, $infos_rubrique['id_parent'],$serveur); 221 } 215 $infos = null; 216 $id_parent = $id_rubrique; 217 do { 218 $row = sql_fetsel(array('id_parent','composition'),'spip_rubriques','id_rubrique='.intval($id_parent),'','','','',$serveur); 219 if (strlen($row['composition']) AND is_null($infos)) 220 $infos = compositions_lister_disponibles('rubrique'); 221 } 222 while ($id_parent = $row['id_parent'] 223 AND 224 (!strlen($row['composition']) OR !isset($infos['rubrique'][$row['composition']]['branche'][$type]))); 225 226 if (strlen($row['composition']) AND isset($infos['rubrique'][$row['composition']]['branche'][$type])) 227 return $infos['rubrique'][$row['composition']]['branche'][$type]; 228 222 229 return ''; 223 230 } … … 255 262 // ne declencher l'usine a gaz que si composition est vide ... 256 263 if ($_composition) 257 $p->code = "((\$zc=$_composition)? \$zc:".$p->code.")";264 $p->code = "((\$zc=$_composition)?(\$zc=='-'?'':\$zc):".$p->code.")"; 258 265 } 259 266 return $p;
Note: See TracChangeset
for help on using the changeset viewer.