fetchArray("SELECT * FROM zz_modules WHERE id=" . prepare($id_module))[0]; $module_query = ($module['options2'] != "") ? $module['options2'] : $module['options']; if(strpos($module_query, "|fields|") === false){ $module_query = json_decode($module_query, true); $module_query = $module_query['main_query'][0]['query']; } $module_query = str_replace("|period_start|", $_SESSION['period_start'], $module_query); $module_query = str_replace("|period_end|", $_SESSION['period_end'], $module_query); $module_query = str_replace("|fields|", $total["select"], $module_query); $results = array(); $results["data"] = array(); $results["recordsTotal"] = 0; $results["recordsFiltered"] = 0; $results["summable"] = array(); /* * Modifico la query principale per limitare i record nel caso l'utente abbia permessi da limitare */ $permessi = $dbo->fetchArray("SELECT clause FROM zz_gruppi_modules WHERE idgruppo=(SELECT id FROM zz_gruppi WHERE nome=" . prepare($_SESSION['gruppo']) . ") AND idmodule=" . prepare($id_module)); if (sizeof($permessi) == 1) { // Includo il file init.php che contiene già i replace corretti di $additional_where[] if (file_exists($docroot . "/modules/" . $module['module_dir'] . "/".$modulo_custom."/init.php")) include ($docroot . "/modules/" . $module['module_dir'] . "/".$modulo_custom."/init.php"); else if (file_exists($docroot . "/modules/" . $module['module_dir'] . "/init.php")) include ($docroot . "/modules/" . $module['module_dir'] . "/init.php"); } if ($module_query != '' && $module_query != 'menu' && $module_query != 'custom') { $query = str_replace_once("SELECT", "SELECT COUNT(*) as tot, ", $module_query); $cont = $dbo->fetchArray($query); if($cont!= null) $results["recordsTotal"] = $cont[0]['tot']; // Se ci sono dei parametri di ricerca per questo modulo li accodo alla query $search_filters = array(); for($i = 0; isset($columns[$i]["search"]["value"]); $i ++) { if ($columns[$i]["search"]["value"] != "") { if(strpos($total["search_inside"][$i], "|search|") !== false){ $sears = explode(",", $columns[$i]["search"]["value"]); foreach ($sears as $sear) { $sear = trim($sear); array_push($search_filters, str_replace("|search|", prepare("%".$sear."%"), $total["search_inside"][$i])); } } else array_push($search_filters, "`".$total["search_inside"][$i] . "` LIKE ".prepare("%" . trim($columns[$i]["search"]["value"]) . "%")); } } if (sizeof($search_filters) > 0) { $module_query = str_replace("1=1", "1=1 AND (" . implode(" AND ", $search_filters) . ") ", $module_query); } // cerco se sono previsti dei filtri per i moduli esempio documenti $query_documenti="select * from zz_modules_documenti where idmodule='".$id_module."'"; $rs_filtro = $dbo->fetchArray( $query_documenti ); if ( sizeof($rs_filtro) == '1' ){ $module_query = str_replace( $rs_filtro[0]['cerca'], $rs_filtro[0]['sostituisci'] , $module_query ); if ( ($_SESSION['gruppo'] != 'Amministratori') && ($_SESSION['gruppo'] != 'Agenti') && ($_SESSION['gruppo'] != 'Tecnici') ){ $module_query = str_replace("1=1", "1=1 and co_documenti.idanagrafica='".$_SESSION['idanagrafica']."'", $module_query); } } // NUOVO Aggiungo eventuali filtri dei permessi $id_gruppo=query_secca("","id","zz_gruppi","where nome ='".$_SESSION['gruppo']."'"); $query_filtri="select * from zz_gruppi_modules where idmodule='".$id_module."' and idgruppo='".$id_gruppo."' and enabled='1'"; $rs_filtro = $dbo->fetchArray( $query_filtri ); if ( sizeof($rs_filtro) == '1' ){ $filtro=$rs_filtro[0]['clause']; $filtro=str_replace("|idanagrafica|", $_SESSION['idanagrafica'] , $filtro); $filtro=str_replace("|idagente|", $_SESSION['idanagrafica'] , $filtro); $filtro=str_replace("|idtecnico|", $_SESSION['idanagrafica'] , $filtro); $module_query = str_replace("1=1", "1=1 " . $filtro, $module_query); } // commento vecchia procedura di filtri per utente //if ($additional_where[$module_name] != '') { // $module_query = str_replace("1=1", "1=1 " . $additional_where[$module_name], $module_query); //} // Fine nuova procedura per filtri utente if (isset($order["dir"]) && isset($order["column"])) { $module_query = explode("ORDER", $module_query)[0] . "ORDER BY `" . $total["order_by"][$order["column"]] . "` " . $order["dir"]; } if(count ($total["summable"])!=0){ $query = str_replace_once("SELECT", "SELECT ".implode(",",$total["summable"])." FROM(SELECT ", $module_query).") AS `z`"; $sums = $dbo->fetchArray($query)[0]; if($sums != null){ $r = array(); foreach ($sums as $key => $sum) { if(strpos($key, "sum_") !== false) $r[str_replace("sum_", "", $key)] = $sum; } $results["summable"] = $r; } } // Paginazione $module_query .= " LIMIT " . $start . ", " . $length; $module_query = str_replace("and co_documenti.idanagrafica=|idanagrafica|", "" , $module_query); $query = str_replace_once("SELECT", "SELECT SQL_CALC_FOUND_ROWS", $module_query); $_SESSION['query_controller'] = $query; // generazione mappe in base al modulo if ( $modules_info[$id_module]['name'] == "Pianificazione" ){ crea_paginagps_pianificazione(); } if ( $modules_info[$id_module]['name'] == "Anagrafiche" ){ crea_paginagps_ana(); } if ( $modules_info[$id_module]['name'] == "Sedi" ){ crea_paginagps_ana_sedi(); } $rs = $dbo->fetchArray($query); $cont = $dbo->fetchArray("SELECT FOUND_ROWS()"); if($cont!= null) $results["recordsFiltered"] = $cont[0]['FOUND_ROWS()']; //$rs = $dbo->fetchArray($module_query); for($r = 0; $r < sizeof($rs); $r ++) { $attr = ''; if (isset($rs[$r]['_bg_']) && $rs[$r]['_bg_'] != '') { $attr .= ' data-background="' . $rs[$r]['_bg_'] . '" data-color:"' . color_inverse($rs[$r]['_bg_']) . '"'; } $array = array(); $num=0; foreach ($total["fields"] as $field) { $tag_start = ""; $tag_end = ""; $tag_start_img=""; $tag_start_inc=""; if ($total['grassetto'][$num] != '0') { $tag_start = ""; $tag_start_inc = ""; } // Allineamento a destra se il valore della prima riga sembra una valuta o è numerico // if (preg_match('/(,)/', $rs[$r][$field])) { OLD PROCEDURA if ($total['allineamento'][$num] == '1') { $tag_start ="
".$tag_start_inc; $tag_end = "
"; } if ($total['allineamento'][$num] == '2') { $tag_start="
".$tag_start_inc; $tag_end= "
"; } // Check per tipologie di campi particolari // Icona if (preg_match("/^color_(.+?)$/", $field, $m)) { if(isset($rs[$r]["color_title_" . $m[1]])) $title = htmlentities($rs[$r]["color_title_" . $m[1]]); else $title = ""; $value = "
 " . $title . "
"; } // Icona di stampa else if (trim($field) == '_print_') { $print_url = $rs[$r]['_print_']; preg_match_all('/\$(.+?)\$/', $print_url, $matches); for($m = 0; $m < sizeof($matches[0]); $m ++) { $print_url = str_replace($matches[0][$m], $rs[$r][$matches[1][$m]], $print_url); } $value = ""; } // Imamgine else if (trim($field) == '_img_') { $image_path = "files/articoli/".$rs[$r][$field]; if( is_file($image_path) ){ $tag_start_img = "
\n"; $tag_start_img = $tag_start_img."\n"; $tag_start_img = $tag_start_img."
"; } $value=""; } // fine imamgine // Data else if (preg_match("/^Data/", $field)) { $value = "
" . $rs[$r][$field] . "
"; } // Icona else if (preg_match("/^icon_(.+?)$/", trim($field), $m)) { $value = '
' . $rs[$r]["icon_title_" . $m[1]] . '
'; } else { $value = $rs[$r][$field]; } if ($total['a_capo'][$num] != '0') { $value = wordwrap ($value, $total['a_capo'][$num] , "
" ,1); } // inizio colonna if (isset($rs[$r]['_link_']) && $rs[$r]['_link_'] != '') { $text = ""; } else if (trim($field) == '_print_') $text = ""; else $text = ""; $text .= " " . $tag_start . $tag_start_img . $value . $tag_end . ""; array_push($array, $text); $num=$num +1 ; // fine colonna } array_push($results["data"], $array); } } echo json_encode($results); ?>