예제 #1
0
/**
 * insertSession
 * Crea una nuova sessione.
 * @param int $SesTournament: torneo
 * @param int $SesOrder: ordine (numero sessione)
 * @param string $SesType: tipo
 * @param string $SesName: nome
 * @param int $SesTar4Session: numero di bersagli
 * @param int $SesAth4Target: numero di persone per bersaglio
 * @param int $SesFirstTarget: primo bersaglio della sessione
 * @param int $SesFollow: 0 no, 1 sì
 * @return mixed: true se ok; messaggio di errore altrimenti
 */
function insertSession($SesTournament, $SesOrder, $SesType, $SesName, $SesTar4Session, $SesAth4Target, $SesFirstTarget, $SesFollow)
{
    $ret = true;
    $q = "INSERT ignore INTO Session (SesTournament,SesOrder,SesType,SesName,SesTar4Session,SesAth4Target,SesFirstTarget,SesFollow) " . "VALUES( " . StrSafe_DB($SesTournament) . ", " . StrSafe_DB($SesOrder) . ", " . StrSafe_DB($SesType) . ", " . StrSafe_DB($SesName) . ", " . StrSafe_DB($SesType == 'Q' || $SesType == 'E' ? $SesTar4Session : 0) . ", " . StrSafe_DB($SesType == 'Q' || $SesType == 'E' ? $SesAth4Target : 0) . ", " . StrSafe_DB($SesType == 'Q' || $SesType == 'E' ? $SesFirstTarget : 0) . ", " . StrSafe_DB($SesType == 'F' ? $SesFollow : 0) . ") ";
    //	print $q;exit;
    $rs = safe_w_sql($q);
    if (!$rs) {
        $ret = '_error_';
    } else {
        // IMPLICAZIONI
        switch ($SesType) {
            case 'Q':
                // aggiorno il numero di sessioni di qualifica (Tournament.ToNumSession)
                $x = updateQualNumSession($SesTournament);
                if (!$x) {
                    $ret = '_error_';
                } else {
                    // genero i paglioni per la sessione
                    $x = regenerateQualTargetsForSession($SesTournament, $SesOrder);
                    if (!$x) {
                        $ret = '_error_';
                    }
                }
                // inserts a new DistanceInformation records set
                $SQL = "select * from DistanceInformation where DiTournament={$SesTournament} and DiType='Q' and DiSession=" . ($SesOrder - 1);
                $q = safe_r_sql($SQL);
                if (safe_num_rows($q)) {
                    while ($r = safe_fetch($q)) {
                        safe_w_sql("insert ignore into DistanceInformation set\r\n\t\t\t\t\t\t\t\tDiTournament={$r->DiTournament},\r\n\t\t\t\t\t\t\t\tDiSession={$SesOrder},\r\n\t\t\t\t\t\t\t\tDiDistance={$r->DiDistance},\r\n\t\t\t\t\t\t\t\tDiEnds={$r->DiEnds},\r\n\t\t\t\t\t\t\t\tDiArrows={$r->DiArrows},\r\n\t\t\t\t\t\t\t\tDiType='Q'");
                    }
                } else {
                    // inserts a standard guess based on the type
                    $q = safe_r_sql("select ToType from Tournament where ToId={$SesTournament}");
                    $r = safe_fetch($q);
                    foreach (getDistanceArrays($r->ToType) as $Dist => $Info) {
                        safe_w_sql("insert ignore into DistanceInformation set DiTournament={$SesTournament}, DiSession={$SesOrder}, DiDistance={$Dist}+1, DiEnds={$Info[0]}, DiArrows={$Info[1]}, DiType='Q'");
                    }
                }
                break;
            case 'E':
                break;
            case 'F':
                break;
            case 'T':
                break;
        }
    }
    return $ret;
}
예제 #2
0
function UpdatePreOpen($TournamentID)
{
    // checks if the structure of the database is consistent
    //	CheckDbStructure();
    $DbVersion = GetParameter('DBUpdate');
    $rs = safe_r_SQL("SELECT ToDbVersion, ToType, ToNumSession FROM Tournament WHERE ToId='{$TournamentID}'");
    $row = safe_fetch($rs);
    $version = $row->ToDbVersion;
    if ($version < '2010-11-26 15:50:00') {
        updateEnTimeStamp_20101126($TournamentID);
        to_save_version($TournamentID, '2010-11-26 15:50:00');
    }
    if ($version < '2010-12-11 20:30:00') {
        recalculateIndividuals_20101211($TournamentID);
        to_save_version($TournamentID, '2010-12-11 20:30:00');
    }
    if ($version < '2011-02-16 15:42:00') {
        // metto a posto il numero max di persone nei team
        calcMaxTeamPerson_20110216($TournamentID);
        // ricalcolo le rank a squadra
        recalculateTeamRanking_20110216($TournamentID);
        to_save_version($TournamentID, '2011-02-16 15:42:00');
    }
    if ($version < '2011-03-09 14:38:00') {
        initTourGoldsXNineChars_20110309($TournamentID);
        to_save_version($TournamentID, '2011-03-09 14:38:00');
    }
    if ($version < '2011-04-15 15:55:00') {
        RecalcFinRank_20110415($TournamentID);
        to_save_version($TournamentID, '2011-04-15 15:55:00');
    }
    if ($version < '2012-01-11 10:20:00') {
        Update3DIta_20120111($TournamentID);
        to_save_version($TournamentID, '2012-01-11 10:20:00');
    }
    if ($version < '2012-01-24 15:16:00') {
        $q = insertIntoGridForF2F_21($TournamentID);
        $rs2 = safe_w_sql($q, false, array(1062));
        to_save_version($TournamentID, '2012-01-24 15:16:00');
    }
    if ($version < '2012-05-18 07:10:00') {
        safe_w_sql("update Divisions set DivWaDivision=DivId, DivRecDivision=DivId where DivWaDivision='' or DivRecDivision=''");
        safe_w_sql("update Classes set ClWaClass=ClId, ClRecClass=ClId where ClWaClass='' or ClRecClass=''");
        safe_w_sql("update Events set EvWaCategory=EvCode, EvRecCategory=EvCode where EvWaCategory='' or EvRecCategory=''");
        to_save_version($TournamentID, '2012-05-18 07:10:00');
    }
    if ($version < '2013-12-19 12:30:00') {
        // Updating DistanceInformation
        require_once 'Modules/Sets/lib.php';
        require_once 'Tournament/Fun_ManSessions.inc.php';
        $Distances = getDistanceArrays($row->ToType);
        $q = safe_r_sql("select SesAth4Target, SesOrder from Session where SesTournament={$TournamentID}");
        while ($r = safe_fetch($q)) {
            CreateDistanceInformation($TournamentID, $Distances, 0, $r->SesAth4Target, $r->SesOrder);
        }
        to_save_version($TournamentID, '2013-12-19 12:30:00');
    }
    if ($version < '2014-03-22 14:00:00') {
        UpdateWinLose_20140322($TournamentID);
        to_save_version($TournamentID, '2014-03-22 14:00:00');
    }
    if ($version < '2014-04-01 00:00:00') {
        UpdateItaRules_20140401($TournamentID);
        to_save_version($TournamentID, '2014-04-01 00:00:00');
    }
    if ($version < '2014-05-23 16:00:00') {
        safe_w_sql("update Scheduler\n\t\t\tleft join Session on SchTournament=SesTournament and SchSesOrder=SesOrder and SchSesType=SesType\n\t\t\tset SchDay=date(SchDateStart), SchStart=time(SchDateStart), SchDuration=TIMESTAMPDIFF(MINUTE, SchDateStart, SchDateEnd), SchText=SchDescr, SchTitle=SesName\n\t\t\twhere SchTournament={$TournamentID}");
        $q = safe_r_sql("select * from Scheduler where SchTournament={$TournamentID} and SchDay>0 and SchStart>0 order by SchDay, SchStart, SchOrder desc");
        $oldKeys = array();
        while ($r = safe_fetch($q)) {
            $good = true;
            $key = $r->SchDay . '|' . $r->SchStart;
            while (in_array($key, $oldKeys)) {
                $key++;
                $good = false;
            }
            $oldKeys[] = $key;
            if (!$good) {
                $SQL = "update Scheduler set SchStart='" . substr($key, -8) . "' where SchDay='{$r->SchDay}' and SchStart='{$r->SchStart}' and SchDuration='{$r->SchDuration}' and SchSesOrder={$r->SchSesOrder} and SchOrder={$r->SchOrder} and SchSesType='{$r->SchSesType}' limit 1";
                safe_w_sql($SQL);
            }
        }
        to_save_version($TournamentID, '2014-04-01 00:00:00');
    }
    to_save_version($TournamentID, $DbVersion);
}