GRAVITY – Looper all fields – Matrice

Linguaggio

PHP

Versione

V1.2

Tipologia

Snippet

Sito

Parametri Snippet

nome, form_id, lista_campi, sorting_par, sorting_dir, gruppo

Allegati

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);