Changeset 109580 in spip-zone
- Timestamp:
- Mar 18, 2018, 10:40:03 AM (3 years ago)
- Location:
- _plugins_/logos_roles/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/logos_roles/trunk/base/logos_roles.php
r109278 r109580 139 139 function logos_roles_declarer_tables_objets_sql($tables) { 140 140 141 $noms_tables = array_filter(array_keys($tables), 'is_string'); 142 141 143 include_spip('logos_roles_fonctions'); 142 144 include_spip('base/objets'); 143 145 144 $roles_logos = lister_roles_logos( );146 $roles_logos = lister_roles_logos(null, null, $noms_tables); 145 147 146 148 if (is_array($roles_logos)) { … … 151 153 $nouveaux_roles_titres[$role] = $options['label']; 152 154 foreach ($options['objets'] as $objet) { 153 $nouveaux_roles_objets[table_objet($objet)][] = $role; 155 // Une ré-implémentation naïve de la fonction table_objet(), qu'on n'a 156 // pas le droit d'utiliser ici, parce qu'elle appelle indirectement ce 157 // pipeline. 158 foreach ($noms_tables as $nom_table) { 159 if (preg_match("/$objet/", $nom_table) === 1) { 160 $table_objet = $nom_table; 161 $nouveaux_roles_objets[$table_objet][] = $role; 162 break; 163 } 164 } 154 165 } 155 166 } -
_plugins_/logos_roles/trunk/logos_roles_fonctions.php
r109140 r109580 27 27 * 28 28 * @param string|null $objet : Un nom d'objet auquel se restreindre. La fonction 29 * 30 * 29 * ne retourne alors que les rôles de logos que l'on peut attribuer à cet 30 * objet. 31 31 * @param string|null $role : Un rôle auquel se restreindre. On accepte `on` ou 32 * `off` pour la rétro-compatibilité 32 * `off` pour la rétro-compatibilité 33 * @param string|null $tous_les_objets : Une liste des objets éditoriaux à 34 * prendre en compte. Ça n'est nécessaire que dans le cas où l'on appelle 35 * cette fonction à un moment où l'API lister_tables_objets_sql n'est pas 36 * encore disponible, notamment dans le pipeline declarer_tables_objets_sql. 37 * Dans les autres cas on utilise l'API pour trouver les tables, pas besoin 38 * de les spécifier. 33 39 * 34 40 * @return array : Retourne le tableau décrivant les rôles de logos. Si on a 35 * passé un paramètre rôle, on retourne directement la définition plutôt qu'une36 * liste avec un seul rôle.37 */ 38 function lister_roles_logos($objet = null, $role = null ) {41 * passé un paramètre rôle, on retourne directement la définition plutôt 42 * qu'une liste avec un seul rôle. 43 */ 44 function lister_roles_logos($objet = null, $role = null, $tous_les_objets = null) { 39 45 40 46 if ($role === 'on') { … … 44 50 } 45 51 46 $tous_les_objets = array_map('table_objet', array_keys(lister_tables_objets_sql())); 52 if (! $tous_les_objets) { 53 $tous_les_objets = array_map( 54 'table_objet', 55 array_filter(array_keys(lister_tables_objets_sql())) 56 ); 57 } 47 58 48 59 // Logos par défaut … … 71 82 72 83 /* Filtrer par objet */ 73 if ($objet = table_objet($objet)) {84 if ($objet and $objet = table_objet($objet)) { 74 85 $roles_logos_objet = array(); 75 86 foreach ($roles_logos as $cle_role => $options) {
Note: See TracChangeset
for help on using the changeset viewer.