Linguaggio
PHP
Versione
V1.2
Tipologia
Snippet
Sito
Parametri Snippet
nome, form_id, lista_campi, sorting_par, sorting_dir, gruppo
Changelog
Versione 1.2: Inserito il group by
Progetti
Sicurezza Pierro
V1.2
Sicurezza Develope
V1.2
Agricoltori Consapevoli
V1.2
Note
Looper che restituisce una matrice tramite una lista di valori indice che viene passata (es. lista_campi="1|3|2") e la ordina secondo il criterio scelto Descrizione parametri: form_id: id del form da cui prelevare i dati nome: nome del looper sorting_par: (opzionale) parametro di ordinamento sorting_dir: (opzionale) tipo di ordinamento lista_campi: indici dei campi da restituire gruppo: campo su cui effettuare il group by
Contenuto
global $name; global $sorting_direction; global $sorting_parameter; global $myform; global $field_list; global $group_by; $name = $nome; $sorting_direction = $sorting_dir; $sorting_parameter = $sorting_par; $myform = $form_id; $field_list = $lista_campi; $group_by = $gruppo; add_filter( 'cs_looper_custom_'.$name, function( $result, $params ) { $looper = array(); global $name; global $sorting_direction; global $sorting_parameter; global $myform; global $field_list; global $group_by; $field_list_array = explode('|',$field_list); $search_criteria = array( 'status' => 'active', ); if ($sorting_direction!='') $sorting = array( 'key' => $sorting_parameter, 'direction' => $sorting_direction); else $sorting = array(); $paging = array( 'offset' => 0, 'page_size' => 100000000); $results = GFAPI::get_entries($myform, $search_criteria, $sorting, $paging ); $array_group = array(); foreach ($results as $result) { $field = GFAPI::get_field($myform, $group_by ); array_push($array_group,$result[$group_by]); } $array_group = array_unique($array_group); foreach ($array_group as $ag) { $dett['qualita'] = $ag; array_push($looper,$dett); } foreach ($results as $result) { foreach($field_list_array as $field_id) { if ($field_id!=$group_by) { $array_dettaglio = array(); $field = GFAPI::get_field($myform, $field_id ); $dettaglio[GFCommon::get_label($field)] = str_replace('|:||:||:||:|','',$result[$field_id]); array_push($array_dettaglio,$dettaglio); } } $key = array_search($result[$group_by], array_column($looper, 'qualita')); if($looper[$key]['parametri']) $count = count($looper[$key]['parametri']); else $count = 0; $looper[$key]['parametri'][$count] = $dettaglio; } /*echo '<pre>'; print_r($looper); echo '</pre>';*/ return $looper; }, 10, 2);