<?php
include('core.php');

function classificaCodice($classificaDati) {
    try {
        $_result = '';
        if(!empty($classificaDati['titolo'])) $_result .= '<h2 class="mxnet-title">' . $classificaDati['titolo'] . '</h2>';
        if(!empty($classificaDati['sottotitolo'])) $_result .= '<h3 class="mxnet-title">' . $classificaDati['sottotitolo'] . '</h3>';
        
        $_result .= '<div class="mxnet-table-responsive"><table class="mxnet-table mxnet-table-striped"><thead>';

        if(isset($classificaDati['testata']['casa']) || isset($classificaDati['testata']['trasferta'])) {
            $_result .= '<tr class="mxnetsoccer-pre-header">';
            $_result .= '<th>&nbsp;</th>';
            if(isset($classificaDati['testata']['generale'])) $_result .= '<th' . (count($classificaDati['testata']['generale']) > 0 ? ' colspan="' . (count($classificaDati['testata']['generale'])) . '"' : '') . '>Generale</th>';
            if(isset($classificaDati['testata']['casa'])) $_result .= '<th' . (count($classificaDati['testata']['casa']) > 0 ? ' colspan="' . (count($classificaDati['testata']['casa'])) . '"' : '') . '>Casa</th>';
            if(isset($classificaDati['testata']['trasferta'])) $_result .= '<th' . (count($classificaDati['testata']['trasferta']) > 0 ? ' colspan="' . (count($classificaDati['testata']['trasferta'])) . '"' : '') . '>Trasferta</th>';
            $_result .= '</tr>';
        }
        $_result .= '<tr>';
        $_result .= '<th class="mxnetsoccer-left">' . (!empty($classificaDati['testata']['squadre']) ? $classificaDati['testata']['squadre'] : '&nbsp;') . '</th>';
        if(isset($classificaDati['testata']['generale'])) {
            foreach ($classificaDati['testata']['generale'] as &$value) {
                $_result .= '<th>' . $value . '</th>';
            }
        }
        if(isset($classificaDati['testata']['casa'])) {
            foreach ($classificaDati['testata']['casa'] as &$value) {
                $_result .= '<th>' . $value . '</th>';
            }
        }
        if(isset($classificaDati['testata']['trasferta'])) {
            foreach ($classificaDati['testata']['trasferta'] as &$value) {
                $_result .= '<th>' . $value . '</th>';
            }
        }
        $_result .= '</tr>';
        $_result .= '</thead><tbody>';

        foreach ($classificaDati as $key => $value) {
            if(strpos($key, 'linea') !== false) {
                $_result .= '<tr>';
                foreach ($classificaDati[$key] as $key2 => $value2) {
                    if($key2 == 'squadre') {
                        $_result .= '<td class="mxnetsoccer-left">' . (!empty($value2['logo']) ? '<img src="' . $value2['logo'] . '">' : '') . ($value2['evidenziata'] == 't' ? '<strong>' : '') . (!empty($value2['squadra']) ? $value2['squadra'] : '') . ($value2['evidenziata'] == 't' ? '</strong>' : '') . (!empty($value2['nota']) ? $value2['nota'] : '') . '</td>';
                        $evidenziata = ($value2['evidenziata'] == 't') ? true : false;
                    } else {
                        foreach ($classificaDati[$key][$key2] as $key3 => $value3) {
                            $_result .= '<td>' . (isset($evidenziata)  && $evidenziata ? '<strong>' : '') . $value3 . (isset($evidenziata)  && $evidenziata ? '</strong>' : '') . '</td>';
                        }
                    }
                }
                $_result .= '</tr>';
            }
        }
        $_result .= '</tbody></table>';
        if(!empty($classificaDati['note'])) $_result .= '<div class="mxnetsoccer-info">' . $classificaDati['note'] . '</div>';
        $_result .= '</div>';
        return $_result;
    } catch (Exception $e) {
        return false;
    }
}

function classificaDati($identificatore_classifica) {
    try {
        if(empty($identificatore_classifica)) throw new Exception('[1]');
        if(connect() === false) throw new Exception('[2]');
        $dati_classifica_web = prendiDatiClassificaWeb($identificatore_classifica, $GLOBALS['connection']);
        if($dati_classifica_web === false) throw new Exception('[3]');
        $dati_fase = prendiDatiFase($dati_classifica_web['identificatore_fase'], $GLOBALS['connection']);
        if($dati_fase === false) throw new Exception('[4]');
        $dati_partecipanti = prendiDatiPartecipanti($dati_classifica_web['identificatore_fase'], $GLOBALS['connection']);
        if($dati_partecipanti === false) throw new Exception('[5]');
        $dati_partite = prendiDatiPartite($dati_classifica_web['identificatore_fase'], $dati_classifica_web['identificatore_giornata'], $dati_partecipanti, $GLOBALS['connection']);
        if($dati_partite === false) throw new Exception('[6]');

        #echo '<pre>';
        #print_r($dati_partite);
        #echo '</pre>';

        /// Inizio creo tabella temporanea e scrivo i partecipanti con fuori classifica e penalità 
        $temporary_table_name = "classifica_" . str_replace('-', '_', uuid());
        $teams_query = "CREATE TEMP TABLE " . $temporary_table_name . " ( identificatore character(36) NOT NULL, identificatore_squadra character(36) NOT NULL, squadra character varying(128), indicazioni character varying(512) DEFAULT '', evidenziata boolean NOT NULL DEFAULT false, ritirata timestamp without time zone, fuori_classifica boolean NOT NULL DEFAULT false, punti smallint NOT NULL DEFAULT 0, giocate smallint NOT NULL DEFAULT 0, vinte smallint NOT NULL DEFAULT 0, pareggiate smallint NOT NULL DEFAULT 0, perse smallint NOT NULL DEFAULT 0, gol_fatti smallint NOT NULL DEFAULT 0, gol_subiti smallint NOT NULL DEFAULT 0, differenza_reti smallint NOT NULL DEFAULT 0, punti_casa smallint NOT NULL DEFAULT 0, giocate_casa smallint NOT NULL DEFAULT 0, vinte_casa smallint NOT NULL DEFAULT 0, pareggiate_casa smallint NOT NULL DEFAULT 0, perse_casa smallint NOT NULL DEFAULT 0, gol_fatti_casa smallint NOT NULL DEFAULT 0, gol_subiti_casa smallint NOT NULL DEFAULT 0, differenza_reti_casa smallint NOT NULL DEFAULT 0, punti_fuori smallint NOT NULL DEFAULT 0, giocate_fuori smallint NOT NULL DEFAULT 0, vinte_fuori smallint NOT NULL DEFAULT 0, pareggiate_fuori smallint NOT NULL DEFAULT 0, perse_fuori smallint NOT NULL DEFAULT 0, gol_fatti_fuori smallint NOT NULL DEFAULT 0, gol_subiti_fuori smallint NOT NULL DEFAULT 0, differenza_reti_fuori smallint NOT NULL DEFAULT 0, immagine text  DEFAULT '', miniatura text  DEFAULT '', note text  DEFAULT '', CONSTRAINT " . $temporary_table_name . "_pkey PRIMARY KEY (identificatore));";
        $conteggio_indicazioni = 0;
        $indicazioni = '';
        $note = '';
        foreach ($dati_partecipanti as $key => $value) {
            $punti = 0;
    
            // Note, asterischi per il ritiro
            if(!empty($value['data_ritiro'])) {
                if(strtotime($value['data_ritiro']) <= strtotime($dati_partite['data_massima'])) {
                    $conteggio_indicazioni++;
                    $indicazioni .= (!empty($indicazioni) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup>';
                    $note .= (!empty($note) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup> Ritirata';
                }
            }
            // Note e asterischi per il fuori classifica
            if($value['fuori_classifica'] == 't') {
                $conteggio_indicazioni++;
                $indicazioni .= (!empty($indicazioni) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup>';
                $note .= (!empty($note) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup>' . ' Fuori classifica';
            }
            // Note, asterischi e punti per le penalità
            if(!empty($value['dati_penali'])) {
                foreach ($value['dati_penali'] as &$value2) {
                    if(strtotime($value2['data_penale']) <= strtotime($dati_partite['data_massima'])) {
                        $conteggio_indicazioni++;
                        $indicazioni .= (!empty($indicazioni) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup>';
                        $note .= (!empty($note) ? ' ' : '') . '<sup>' . $conteggio_indicazioni . '</sup>' . $value2['punti'] . ' punti di penalità' . (!empty($value2['penale']) ? ' (' . $value2['penale'] . ')': '');
                        $punti = $punti - $value2['punti'];
                    }
                }
            }
            $teams_query .= " INSERT INTO " . $temporary_table_name . " (identificatore, identificatore_squadra, squadra, indicazioni, evidenziata, ritirata, fuori_classifica, punti, immagine, miniatura) VALUES ('" . uuid() . "', '" . $key . "', '" . pg_escape_string($value['descrizione']) . "', '" . $indicazioni . "', " . ($value['evidenziata'] == 't' ? 'true' : 'false') . ", " . (!empty($value['data_ritiro']) ? "'" . $value['data_ritiro'] . "'": 'null') . ", " . ($value['fuori_classifica'] == 't' ? 'true' : 'false') . ", " . $punti . ", '" . pg_escape_string($value['immagine']) . "', '" . pg_escape_string((!empty($value['miniatura']) ? IMAGESURL . $value['miniatura'] : '')) . "');";
            $indicazioni = '';
        }
        $teams_query .= " UPDATE " . $temporary_table_name . " SET note = '" . pg_escape_string($note) . "';";
        if(transaction($teams_query) == false) throw new Exception('[7]');
        /// Fine creo tabella temporanea e scrivo i partecipanti con fuori classifica e penalità
        /// Inizio processo partite
        $matches_query = '';
        foreach ($dati_partite['partite'] as &$value) {
            if($value['giocata'] == 't') {

                /// Partite giocate
                if($value['rinviata'] == 'f' && $value['sospesa'] == 'f') {
                    $partecipante_casa_fuori_classifica = $dati_partecipanti[$value['identificatore_partecipante_casa']]['fuori_classifica'];
                    $partecipante_trasferta_fuori_classifica = $dati_partecipanti[$value['identificatore_partecipante_trasferta']]['fuori_classifica'];
                    /// Scrivo le partite giocate
                    if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 't') continue; // aggiunta 2022-10-26
                    if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= "UPDATE " . $temporary_table_name . " SET  giocate = giocate +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                    if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  giocate = giocate +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  giocate_casa = giocate_casa +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                    if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  giocate_fuori = giocate_fuori +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    /// Scrivo i punti, vinte e perse
                    if($value['gol_casa'] == $value['gol_trasferta']) {
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti = punti +" . $dati_fase['punti_pareggio'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti_casa = punti_casa +" . $dati_fase['punti_pareggio'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti = punti +" . $dati_fase['punti_pareggio'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti_fuori = punti_fuori +" . $dati_fase['punti_pareggio'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  pareggiate = pareggiate +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  pareggiate = pareggiate +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  pareggiate_casa = pareggiate_casa +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  pareggiate_fuori = pareggiate_fuori +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    } elseif ($value['gol_casa'] > $value['gol_trasferta']) {
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti = punti +" . $dati_fase['punti_vittoria'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti_casa = punti_casa +" . $dati_fase['punti_vittoria'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  vinte = vinte +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  vinte_casa = vinte_casa +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  perse = perse +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  perse_fuori = perse_fuori +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    } elseif($value['gol_casa'] < $value['gol_trasferta']) {
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti = punti +" . $dati_fase['punti_vittoria'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  punti_fuori = punti_fuori +" . $dati_fase['punti_vittoria'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  vinte = vinte +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  perse = perse +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  vinte_fuori = vinte_fuori +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  perse_casa = perse_casa +1 WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                    }
                    /// Scrivo le reti
                    if($value['gol_casa'] > 0) {
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_fatti = gol_fatti +" . $value['gol_casa'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_fatti_casa = gol_fatti_casa +" . $value['gol_casa'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_subiti = gol_subiti +" . $value['gol_casa'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_subiti_fuori = gol_subiti_fuori +" . $value['gol_casa'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    }
                    if($value['gol_trasferta'] > 0) {
                        if($partecipante_trasferta_fuori_classifica == 't' || $partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_fatti = gol_fatti +" . $value['gol_trasferta'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_trasferta_fuori_classifica == 't' ||$partecipante_casa_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_fatti_fuori = gol_fatti_fuori +" . $value['gol_trasferta'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_subiti = gol_subiti +" . $value['gol_trasferta'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        if($partecipante_casa_fuori_classifica == 't' || $partecipante_trasferta_fuori_classifica == 'f') $matches_query .= " UPDATE " . $temporary_table_name . " SET  gol_subiti_casa = gol_subiti_casa +" . $value['gol_trasferta'] . " WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                    }
                    if($value['gol_casa'] > 0 || $value['gol_trasferta'] > 0) {
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti = gol_fatti - gol_subiti WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti = gol_fatti - gol_subiti WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti_casa = gol_fatti_casa - gol_subiti_casa WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti_casa = gol_fatti_casa - gol_subiti_casa WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti_fuori = gol_fatti_fuori - gol_subiti_fuori WHERE identificatore_squadra = '" . $value['identificatore_partecipante_casa'] . "';";
                        $matches_query .= " UPDATE " . $temporary_table_name . " SET differenza_reti_fuori = gol_fatti_fuori - gol_subiti_fuori WHERE identificatore_squadra = '" . $value['identificatore_partecipante_trasferta'] . "';";
                    }
                }
            }
        }
        if(!empty($matches_query)) {
            if(transaction($matches_query) == false) throw new Exception('[8]');
        }
        $prendiDatiTabellaTemporanea = prendiDatiTabellaTemporanea($temporary_table_name, $dati_classifica_web, $GLOBALS['connection']);
        if($prendiDatiTabellaTemporanea === false) throw new Exception('[9]');
        disconnect();
        return $prendiDatiTabellaTemporanea;
    } catch (Exception $e) {
        disconnect();
        return false;
    }
}

function prendiDatiTabellaTemporanea($temporary_table_name, $dati_classifica_web, $connection) {
    $_result = array();
    $campi_aggiuntivi = '';
    $array_elementi_colonna_squadre = explode(',', $dati_classifica_web['elementi_colonna_squadre']);
    $array_sezioni_visualizzate = explode(',', $dati_classifica_web['sezioni_visualizzate']);
    $array_generale_colonne = explode(',', $dati_classifica_web['generale_colonne']);
    $array_casa_colonne = explode(',', $dati_classifica_web['casa_colonne']);
    $array_trasferta_colonne = explode(',', $dati_classifica_web['trasferta_colonne']);
    $query = "SELECT * FROM " . $temporary_table_name . " ORDER BY punti DESC, vinte DESC, differenza_reti DESC, gol_fatti DESC, squadra ASC;";
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) > 0) {
            $_result['titolo'] = (!empty($dati_classifica_web['titolo'])) ? $dati_classifica_web['titolo'] : null;
            $_result['sottotitolo'] = (!empty($dati_classifica_web['sottotitolo'])) ? $dati_classifica_web['sottotitolo'] : null;
            $_result['testata'] = array();
            $_result['testata']['squadre'] = $dati_classifica_web['titolo_colonna_squadre'];
            if(in_array('Punti', $array_generale_colonne)) $_result['testata']['generale']['punti'] = $dati_classifica_web['generale_titolo_punti'];
            if(in_array('Partite giocate', $array_generale_colonne)) $_result['testata']['generale']['giocate'] = $dati_classifica_web['generale_titolo_giocate'];
            if(in_array('Partite vinte', $array_generale_colonne)) $_result['testata']['generale']['vinte'] = $dati_classifica_web['generale_titolo_vinte'];
            if(in_array('Partite pareggiate', $array_generale_colonne)) $_result['testata']['generale']['pareggiate'] = $dati_classifica_web['generale_titolo_pareggiate'];
            if(in_array('Partite perse', $array_generale_colonne)) $_result['testata']['generale']['perse'] = $dati_classifica_web['generale_titolo_perse'];
            if(in_array('Gol fatti', $array_generale_colonne)) $_result['testata']['generale']['fatti'] = $dati_classifica_web['generale_titolo_fatti'];
            if(in_array('Gol subiti', $array_generale_colonne)) $_result['testata']['generale']['subiti'] = $dati_classifica_web['generale_titolo_subiti'];
            if(in_array('Differenza reti', $array_generale_colonne)) $_result['testata']['generale']['differenza'] = $dati_classifica_web['generale_titolo_differenza'];
            
            if(in_array('Classifica casa', $array_sezioni_visualizzate)) {
                if(in_array('Punti', $array_casa_colonne)) $_result['testata']['casa']['punti'] = $dati_classifica_web['casa_titolo_punti'];
                if(in_array('Partite giocate', $array_casa_colonne)) $_result['testata']['casa']['giocate'] = $dati_classifica_web['casa_titolo_giocate'];
                if(in_array('Partite vinte', $array_casa_colonne)) $_result['testata']['casa']['vinte'] = $dati_classifica_web['casa_titolo_vinte'];
                if(in_array('Partite pareggiate', $array_casa_colonne)) $_result['testata']['casa']['pareggiate'] = $dati_classifica_web['casa_titolo_pareggiate'];
                if(in_array('Partite perse', $array_casa_colonne)) $_result['testata']['casa']['perse'] = $dati_classifica_web['casa_titolo_perse'];
                if(in_array('Gol fatti', $array_casa_colonne)) $_result['testata']['casa']['fatti'] = $dati_classifica_web['casa_titolo_fatti'];
                if(in_array('Gol subiti', $array_casa_colonne)) $_result['testata']['casa']['subiti'] = $dati_classifica_web['casa_titolo_subiti'];
                if(in_array('Differenza reti', $array_casa_colonne)) $_result['testata']['casa']['differenza'] = $dati_classifica_web['casa_titolo_differenza'];
            }

            if(in_array('Classifica trasferta', $array_sezioni_visualizzate)) {
                if(in_array('Punti', $array_trasferta_colonne)) $_result['testata']['trasferta']['punti'] = $dati_classifica_web['trasferta_titolo_punti'];
                if(in_array('Partite giocate', $array_trasferta_colonne)) $_result['testata']['trasferta']['giocate'] = $dati_classifica_web['trasferta_titolo_giocate'];
                if(in_array('Partite vinte', $array_trasferta_colonne)) $_result['testata']['trasferta']['vinte'] = $dati_classifica_web['trasferta_titolo_vinte'];
                if(in_array('Partite pareggiate', $array_trasferta_colonne)) $_result['testata']['trasferta']['pareggiate'] = $dati_classifica_web['trasferta_titolo_pareggiate'];
                if(in_array('Partite perse', $array_trasferta_colonne)) $_result['testata']['trasferta']['perse'] = $dati_classifica_web['trasferta_titolo_perse'];
                if(in_array('Gol fatti', $array_trasferta_colonne)) $_result['testata']['trasferta']['fatti'] = $dati_classifica_web['trasferta_titolo_fatti'];
                if(in_array('Gol subiti', $array_trasferta_colonne)) $_result['testata']['trasferta']['subiti'] = $dati_classifica_web['trasferta_titolo_subiti'];
                if(in_array('Differenza reti', $array_trasferta_colonne)) $_result['testata']['trasferta']['differenza'] = $dati_classifica_web['trasferta_titolo_differenza'];
            }
            $counter = 1;
            $note = null;
            while($row = pg_fetch_array($result)) {
                $indice = 'linea' . str_pad($counter, 2, '0', STR_PAD_LEFT);
                $squadra = array();
                if(in_array('Squadra', $array_elementi_colonna_squadre)) {
                    $squadra['squadra'] = $row['squadra'];
                } else {
                    $squadra['squadra'] = null;
                }
                if(in_array('Logo', $array_elementi_colonna_squadre)) {
                    $squadra['logo'] = $row['miniatura'];
                } else {
                    $squadra['logo'] = null;
                }
                $squadra['evidenziata'] = $row['evidenziata'];
                $squadra['nota'] = (in_array('Note', $array_sezioni_visualizzate) ? $row['indicazioni'] : null);
                $_result[$indice] = array('squadre' => $squadra);
                if(in_array('Punti', $array_generale_colonne)) $_result[$indice]['generale']['punti'] = $row['punti'];
                if(in_array('Partite giocate', $array_generale_colonne)) $_result[$indice]['generale']['giocate'] = $row['giocate'];
                if(in_array('Partite vinte', $array_generale_colonne)) $_result[$indice]['generale']['vinte'] = $row['vinte'];
                if(in_array('Partite pareggiate', $array_generale_colonne)) $_result[$indice]['generale']['pareggiate'] = $row['pareggiate'];
                if(in_array('Partite perse', $array_generale_colonne)) $_result[$indice]['generale']['perse'] = $row['perse'];
                if(in_array('Gol fatti', $array_generale_colonne)) $_result[$indice]['generale']['fatti'] = $row['gol_fatti'];
                if(in_array('Gol subiti', $array_generale_colonne)) $_result[$indice]['generale']['subiti'] = $row['gol_subiti'];
                if(in_array('Differenza reti', $array_generale_colonne)) $_result[$indice]['generale']['differenza'] = $row['differenza_reti'];
                if(in_array('Classifica casa', $array_sezioni_visualizzate)) {
                    if(in_array('Punti', $array_casa_colonne)) $_result[$indice]['casa']['punti'] = $row['punti_casa'];
                    if(in_array('Partite giocate', $array_casa_colonne)) $_result[$indice]['casa']['giocate'] = $row['giocate_casa'];
                    if(in_array('Partite vinte', $array_casa_colonne)) $_result[$indice]['casa']['vinte'] = $row['vinte_casa'];
                    if(in_array('Partite pareggiate', $array_casa_colonne)) $_result[$indice]['casa']['pareggiate'] = $row['pareggiate_casa'];
                    if(in_array('Partite perse', $array_casa_colonne)) $_result[$indice]['casa']['perse'] = $row['perse_casa'];
                    if(in_array('Gol fatti', $array_casa_colonne)) $_result[$indice]['casa']['fatti'] = $row['gol_fatti_casa'];
                    if(in_array('Gol subiti', $array_casa_colonne)) $_result[$indice]['casa']['subiti'] = $row['gol_subiti_casa'];
                    if(in_array('Differenza reti', $array_casa_colonne)) $_result[$indice]['casa']['differenza'] = $row['differenza_reti_casa'];
                }
                if(in_array('Classifica trasferta', $array_sezioni_visualizzate)) {
                    if(in_array('Punti', $array_trasferta_colonne)) $_result[$indice]['trasferta']['punti'] = $row['punti_fuori'];
                    if(in_array('Partite giocate', $array_trasferta_colonne)) $_result[$indice]['trasferta']['giocate'] = $row['giocate_fuori'];
                    if(in_array('Partite vinte', $array_trasferta_colonne)) $_result[$indice]['trasferta']['vinte'] = $row['vinte_fuori'];
                    if(in_array('Partite pareggiate', $array_trasferta_colonne)) $_result[$indice]['trasferta']['pareggiate'] = $row['pareggiate_fuori'];
                    if(in_array('Partite perse', $array_trasferta_colonne)) $_result[$indice]['trasferta']['perse'] = $row['perse_fuori'];
                    if(in_array('Gol fatti', $array_trasferta_colonne)) $_result[$indice]['trasferta']['fatti'] = $row['gol_fatti_fuori'];
                    if(in_array('Gol subiti', $array_trasferta_colonne)) $_result[$indice]['trasferta']['subiti'] = $row['gol_subiti_fuori'];
                    if(in_array('Differenza reti', $array_trasferta_colonne)) $_result[$indice]['trasferta']['differenza'] = $row['differenza_reti_fuori'];
                }
                $note = $row['note'];
                $counter++;
            }
            $_result['note'] = (in_array('Note', $array_sezioni_visualizzate) ? $note : null);
            return $_result;
        }
    }
    return false;
}

function prendiDatiPartite($uuid_fase, $uuid_giornata, $dati_partecipanti, $connection) {
    $query = "SELECT data_partita, identificatore_partecipante_casa, identificatore_partecipante_trasferta, gol_casa, gol_trasferta, rinviata, sospesa, giocata FROM partite WHERE data_partita <= now() AND attivo = true AND identificatore_fase = '" . $uuid_fase . "'";
    if(!empty($uuid_giornata)) $query .= " AND identificatore_giornata IN (SELECT identificatore FROM giornate WHERE identificatore_fase = '" . $uuid_fase . "' AND data_giornata <= (SELECT data_giornata FROM giornate WHERE identificatore = '" . $uuid_giornata . "'))";
    $query .= ' ORDER BY data_partita ASC;';
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) > 0) {
            $_return = array();
            $_return['data_massima'] = '';
            $_return['data_minima'] = '3000-09-20 00:00:00';
            while($row = pg_fetch_array($result)) {
                if($row['data_partita'] > $_return['data_massima']) $_return['data_massima'] = $row['data_partita'];
                if($row['data_partita'] < $_return['data_minima']) $_return['data_minima'] = $row['data_partita'];

                $_return['partite'][] = array('giocata' => $row['giocata'], 'data_partita' => $row['data_partita'], 'identificatore_partecipante_casa' => $row['identificatore_partecipante_casa'], 'identificatore_partecipante_trasferta' => $row['identificatore_partecipante_trasferta'], 'partecipante_casa' => $dati_partecipanti[$row['identificatore_partecipante_casa']]['descrizione'], 'partecipante_trasferta' => $dati_partecipanti[$row['identificatore_partecipante_trasferta']]['descrizione'], 'gol_casa' => $row['gol_casa'], 'gol_trasferta' => $row['gol_trasferta'], 'rinviata' => $row['rinviata'], 'sospesa' => $row['sospesa']);
            }
            return $_return;
        }
    }
    return false;
}

function prendiDatiPartecipanti($uuid_fase, $connection) {
    $query = "SELECT partecipanti.identificatore, partecipanti.descrizione, partecipanti.fuori_classifica, partecipanti.data_ritiro, partecipanti.evidenziata, partecipanti.penali, squadre.immagine, squadre.miniatura FROM partecipanti LEFT OUTER JOIN squadre ON partecipanti.identificatore_squadra = squadre.identificatore WHERE partecipanti.identificatore_fase = '" . $uuid_fase . "' ORDER BY partecipanti.descrizione ASC;";
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) > 0) {
            $_return = array();
            while($row = pg_fetch_array($result)) {
                $_return[$row['identificatore']] = array('descrizione' => $row['descrizione'], 'fuori_classifica' => $row['fuori_classifica'], 'data_ritiro' => $row['data_ritiro'], 'evidenziata' => $row['evidenziata'], 'penali' => $row['penali'], 'dati_penali' => prendiDatiPenali($row['identificatore'], $connection), 'immagine' => $row['immagine'], 'miniatura' => $row['miniatura']);
            }
            return $_return;
        }
    }
    return false;
}

function prendiDatiPenali($uuid_partecipante, $connection) {
    $query = "SELECT penale, data_penale, punti, penale FROM penali WHERE identificatore_partecipante = '" . $uuid_partecipante . "' ORDER BY data_penale ASC;";
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) > 0) {
            $_return = array();
            while($row = pg_fetch_array($result)) {
                $_return[] = array('penale' => $row['penale'], 'data_penale' => $row['data_penale'], 'punti' => $row['punti'], 'penale' => $row['penale']);
            }
            return $_return;
        }
    }
    return false;
}

function prendiDatiFase($uuid_fase, $connection) {
    $query = "SELECT * FROM fasi WHERE identificatore = '" . $uuid_fase . "' AND attivo = true;";
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) == 1) {
            return @pg_fetch_assoc($result, 0);
        }
    }
    return false;
}

function prendiDatiClassificaWeb($identificatore_classifica, $connection) {
    $query = "SELECT * FROM classifiche LEFT OUTER JOIN tornei ON classifiche.identificatore_torneo = tornei.identificatore WHERE classifiche.identificatore = '" . $identificatore_classifica . "' AND tornei.attivo = true;";
    if(($result = @pg_query($connection, $query)) !== false) {
        if(pg_num_rows($result) == 1) {
            return @pg_fetch_assoc($result, 0);
        }
    }
    return false;
}
?>
