function clm_api_db_tournament_delDWZ($id, $group = true) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table_list = "#__clm_meldeliste_spieler"; $table_list_id = "lid"; } else { $table_list = "#__clm_turniere_tlnr"; $table_list_id = "turnier"; } // Löschen der DWZ-Auswertung zur LigaSaison $query = "UPDATE " . $table_list . " SET DWZ = 0" . " , I0 = 0" . " , Punkte = 0" . " , Partien = 0" . " , WE = 0" . " , Leistung = 0" . " , EFaktor = 0" . " , Niveau = 0" . " WHERE " . $table_list_id . "= " . $id; clm_core::$db->query($query); if ($group) { $table = clm_core::$db->liga->get($id); } else { $table = clm_core::$db->turniere->get($id); } if (!$table->isNew()) { $params = new clm_class_params($table->params); $params->set("inofDWZ", ""); $table->params = $params->params(); } return array(true, "m_delDWZ"); }
function _getTurnierData() { $query = "SELECT *" . " FROM #__clm_turniere" . " WHERE id = " . $this->turnierid; $this->_db->setQuery($query); $this->turnier = $this->_db->loadObject(); // TO-DO: auslagern // zudem PGN-Parameter auswerten $turParams = new clm_class_params($this->turnier->params); $pgnInput = $turParams->get('pgnInput', 1); $pgnPublic = $turParams->get('pgnPublic', 1); // User ermitteln $user = JFactory::getUser(); // Flag für View und Template setzen: pgnShow // FALSE - PGN nicht verlinken/anzeigen // TRUE - PGN-Links setzen und anzeigen // 'pgnInput möglich' UND ('pgn öffentlich' ORDER 'User eingeloggt') if ($pgnInput == 1 and ($pgnPublic == 1 or $user->id > 0)) { $this->pgnShow = TRUE; } else { $this->pgnShow = FALSE; } $this->displayTlOK = $turParams->get('displayTlOK', 0); // turniernamen anpassen? $addCatToName = $turParams->get('addCatToName', 0); if ($addCatToName != 0 and ($this->turnier->catidAlltime > 0 or $this->turnier->catidEdition > 0)) { $this->turnier->name = CLMText::addCatToName($addCatToName, $this->turnier->name, $this->turnier->catidAlltime, $this->turnier->catidEdition); } }
function clm_api_db_tournament_auto($id, $group = true, $report = false, $runde = 0, $dg = 0, $paar = 0) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table = "liga"; } else { $table = "turniere"; } // inoff. DWZ Auswerten/Löschen/Ignorieren $params = new clm_class_params(clm_core::$db->{$table}->get($id)->params); $autoDWZ = $params->get("autoDWZ", 0); if ($autoDWZ == 0) { clm_core::$api->direct("db_tournament_genDWZ", array($id, $group)); } else { if ($autoDWZ == 1) { clm_core::$api->direct("db_tournament_delDWZ", array($id, $group)); // DWZ nicht bei db_report_save aktualisieren (Ergebnismeldung) } else { if ($autoDWZ == 2 && !$report) { clm_core::$api->direct("db_tournament_genDWZ", array($id, $group)); } } } // Rangliste Auswerten/Ignorieren $params = new clm_class_params(clm_core::$db->{$table}->get($id)->params); $autoDWZ = $params->get("autoRANKING", 0); if ($autoDWZ == 0) { clm_core::$api->db_tournament_ranking($id, $group); } }
function _getTurnierData() { $query = "SELECT *" . " FROM #__clm_turniere" . " WHERE id = " . $this->turnierid; $this->_db->setQuery($query); $this->turnier = $this->_db->loadObject(); // turniernamen anpassen? $turParams = new clm_class_params($this->turnier->params); $addCatToName = $turParams->get('addCatToName', 0); if ($addCatToName != 0 and ($this->turnier->catidAlltime > 0 or $this->turnier->catidEdition > 0)) { $this->turnier->name = CLMText::addCatToName($addCatToName, $this->turnier->name, $this->turnier->catidAlltime, $this->turnier->catidEdition); } }
function _getTurnierData() { $query = "SELECT t.*, CHAR_LENGTH(t.invitationText) AS invitationLength, s.name AS saisonname, u.name AS tlname" . " FROM #__clm_turniere AS t" . " LEFT JOIN #__clm_saison AS s ON s.id = t.sid" . " LEFT JOIN #__clm_user AS u ON jid = t.tl" . " WHERE t.id = " . $this->turnierid; $this->_db->setQuery($query); $this->turnier = $this->_db->loadObject(); // Ausrichter $this->turnier->organame = clm_core::$load->zps_to_district($this->turnier->vereinZPS); // turniernamen anpassen? $turParams = new clm_class_params($this->turnier->params); $addCatToName = $turParams->get('addCatToName', 0); if ($addCatToName != 0 and ($this->turnier->catidAlltime > 0 or $this->turnier->catidEdition > 0)) { $this->turnier->name = CLMText::addCatToName($addCatToName, $this->turnier->name, $this->turnier->catidAlltime, $this->turnier->catidEdition); } }
function clm_api_db_tournament_copy($id, $group = true) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table_list = "#__clm_liga"; } else { $table_list = "#__clm_turniere"; } $sql = "SELECT * FROM " . $table_list . " WHERE id=" . $id; $table = clm_core::$db->loadAssocList($sql); $lang = clm_core::$lang->tournament; $table[0]["name"] = $lang->copy2 . " " . $table[0]["name"]; $table[0]["rnd"] = 0; $table[0]["published"] = 0; $out = new clm_class_params($table[0]["params"]); $out->set("dwz_date", ""); $out->set("inofDWZ", ""); $table[0]["params"] = $out->params(); $keyS = ""; $valueS = ""; foreach ($table[0] as $key => $value) { if (is_numeric($key) || $key == "id") { continue; } if ($keyS != "") { $keyS .= ", "; } $keyS .= "`" . $key . "`"; if ($valueS != "") { $valueS .= ", "; } $valueS .= "'" . clm_core::$db->escape($value) . "'"; } $new = "INSERT INTO " . $table_list . " (" . $keyS . ") VALUES (" . $valueS . ")"; clm_core::$db->query($new); return array(true, ""); }
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.fishpoke.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); /** * @package Joomla.Platform * @subpackage HTML * * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ $turParams = new clm_class_params($this->turnier->params); ?> <script language="javascript" type="text/javascript"> function showFormRoundscount(){ if (document.getElementById('typ').value == 1) { // CH document.getElementById('formRoundscountValue').innerHTML = jsform['runden']; document.getElementById('formRoundscountText').innerHTML = ''; document.getElementById('formStagecount').innerHTML = '-'; //document.getElementById('formTiebreakers').innerHTML = jsform['tiebreakers']; } else if (document.getElementById('typ').value == 2) { // voll changeRoundscountModus2(); document.getElementById('formRoundscountText').innerHTML = jstext['roundscountgenerated']; //document.getElementById('formStagecount').innerHTML = jsform['stages']; //document.getElementById('formTiebreakers').innerHTML = jsform['tiebreakers'];
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008-2015 CLM Team All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.chessleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $turnierid = JRequest::getInt('turnier', '1'); $config = clm_core::$db->config(); $turParams = new clm_class_params($this->turnier->params); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'fpdf.php'; class PDF extends FPDF { //Kopfzeile function Header() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_header.php'; } //Fusszeile function Footer() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_footer.php'; } } // Zellenhöhe -> Standard 6
function _saveDo() { JRequest::checkToken() or die('Invalid Token'); // Instanz der Tabelle $row = JTable::getInstance('turniere', 'TableCLM'); $row->load($this->turnierid); // Daten zu dieser ID laden $clmAccess = clm_core::$access; if ($row->tl != clm_core::$access->getJid() and $clmAccess->access('BE_tournament_edit_detail') !== true or $clmAccess->access('BE_tournament_edit_detail') === false) { //if (clm_core::$access->getType() != 'admin' AND clm_core::$access->getType() != 'tl') { JError::raiseWarning(500, JText::_('TOURNAMENT_NO_ACCESS')); return false; } $turnier = $this->turnierid; $task = JRequest::getVar('task'); $cid = JRequest::getVar('cid', array(0), '', 'array'); // JArrayHelper::toInteger($cid, array(0)); // weiteren Daten aus TlnTabelle $query = "SELECT MAX(mgl_nr), MAX(snr) FROM `#__clm_turniere_tlnr`" . " WHERE turnier = " . $this->turnierid; $this->_db->setQuery($query); list($maxFzps, $maxSnr) = $this->_db->loadRow(); $maxFzps++; // fiktive ZPS für manuell eingegeben Spieler $maxSnr++; // maximale snr für alle Spieler // Turnierdaten $tournament = new CLMTournament($this->turnierid, true); $playersIn = $tournament->getPlayersIn(); $turParams = new clm_class_params($tournament->data->params); $param_useastwz = $turParams->get('useAsTWZ', 0); // Turnier schon vorher voll? if (!$this->_checkTournamentOpen($playersIn, $tournament->data->teil)) { return false; } $name = trim(JRequest::getVar('name')); // Spieler aus manueller Nachmeldung speichern if ($name != "") { // weitere Angaben holen $verein = JRequest::getString('verein'); // $dwz = JRequest::getInt('dwz'); $natrating = JRequest::getInt('natrating', 0); $fideelo = JRequest::getInt('fideelo', 0); $titel = JRequest::getString('titel'); $geschlecht = JRequest::getString('geschlecht', 'NULL'); $birthYear = JRequest::getString('birthYear', '0000'); $twz = clm_core::$load->gen_twz($param_useastwz, $natrating, $fideelo); $query = " INSERT INTO #__clm_turniere_tlnr" . " (`sid`, `turnier`, `snr`, `name`, `birthYear`, `geschlecht`, `verein`, `twz`, `start_dwz`, `FIDEelo`, `titel`, `mgl_nr` ,`zps`)" . " VALUES" . " ('" . $tournament->data->sid . "', '" . $this->turnierid . "', '" . $maxSnr++ . "', '{$name}', '{$birthYear}', '{$geschlecht}', '{$verein}', '{$twz}', '{$natrating}', '{$fideelo}', '{$titel}', '" . $maxFzps . "', '99999')"; $this->_db->setQuery($query); if ($this->_db->query()) { $this->app->enqueueMessage(JText::_('PLAYER') . " " . $name . " " . JText::_('ADDED')); $playersIn++; // den angemeldeten Spielern zufügen return true; } else { $this->app->enqueueMessage(JText::_('DB_ERROR')); return false; } } // wenn hier ein Spieler eingetragen wurde, geht es nicht mehr durch die Liste... foreach ($cid as $id) { // noch Platz im Turnier? if ($this->_checkTournamentOpen($playersIn, $tournament->data->teil)) { // ausgelesene Daten $mgl = substr($id, 5); if (!is_numeric($mgl)) { $mgl = -1; } $zps = substr($id, 0, 5); // weitere Daten des Spielers ermitteln // in CLM DB suchen $query = "SELECT a.Spielername, a.Geburtsjahr, a.Geschlecht, a.FIDE_Titel, a.FIDE_Elo, a.FIDE_ID, FIDE_Land, a.DWZ, v.Vereinname" . " FROM `#__clm_dwz_spieler` as a" . " LEFT JOIN #__clm_dwz_vereine as v ON v.ZPS = a.ZPS" . " LEFT JOIN #__clm_saison as s ON s.id = a.sid " . " WHERE a.ZPS = '{$zps}'" . " AND a.Mgl_Nr = " . $mgl . " AND s.archiv = 0 " . " AND a.sid = " . clm_core::$access->getSeason(); $this->_db->setQuery($query); $data = $this->_db->loadObject(); if (isset($data->Spielername)) { // checken ob Spieler schon eingetragen, um Doppelungen zu vermeiden $query = "SELECT COUNT(*) FROM #__clm_turniere_tlnr" . " WHERE `turnier` = '" . $this->turnierid . "' AND `mgl_nr` = '{$mgl}' AND `zps` = '{$zps}'"; $this->_db->setQuery($query); if ($this->_db->loadResult() > 0) { JError::raiseWarning(500, JText::_('PLAYER') . " " . $data->Spielername . " " . JText::_('ALREADYIN')); } else { $twz = clm_core::$load->gen_twz($param_useastwz, $data->DWZ, $data->FIDE_Elo); $query = " INSERT INTO #__clm_turniere_tlnr" . " (`sid`, `turnier`, `snr`, `name`, `birthYear`, `geschlecht`, `verein`, `twz`, `start_dwz`, `FIDEelo`, `FIDEid`, `FIDEcco`, `titel`,`mgl_nr` ,`zps`) " . " VALUES" . " ('" . $tournament->data->sid . "','" . $this->turnierid . "', '" . $maxSnr++ . "', '" . clm_escape($data->Spielername) . "', '" . $data->Geburtsjahr . "', '" . $data->Geschlecht . "','" . clm_escape($data->Vereinname) . "', '" . $twz . "', '" . $data->DWZ . "', '" . $data->FIDE_Elo . "', '" . $data->FIDE_ID . "', '" . $data->FIDE_Land . "', '" . $data->FIDE_Titel . "', '{$mgl}', '{$zps}')"; $this->_db->setQuery($query); if ($this->_db->query()) { $playersIn++; $this->app->enqueueMessage(JText::_('PLAYER') . " " . $data->Spielername . " " . JText::_('ADDED')); } else { JError::raiseWarning(500, JText::_('DB_ERROR')); } } } else { JError::raiseWarning(500, CLMText::errorText('PLAYER', 'UNKNOWN')); } } // sonst war Turnier voll } // je nach Task: Message und Weiterleitung switch ($task) { case 'apply': $stringAktion = JText::_('PLAYERS_ADDED'); break; case 'save': default: $stringAktion = JText::_('PLAYERS_SAVED'); $this->adminLink->view = "turplayers"; // WL in Liste break; } // Plätze frei? $openSpots = $tournament->data->teil - $playersIn; if ($openSpots > 0) { JError::raiseNotice(500, JText::_('PARTICIPANTS_WANTED') . ": " . $openSpots); } else { JError::raiseNotice(500, CLMText::errorText('PARTICIPANTLIST', 'FULL')); } // Message // $this->app->enqueueMessage($stringAktion); // Log schreiben $clmLog = new CLMLog(); $clmLog->aktion = $stringAktion; $clmLog->params = array('sid' => $tournament->data->sid, 'tid' => $this->turnierid); // TurnierID wird als LigaID gespeichert $clmLog->write(); return true; }
function _saveDo() { // Check for request forgeries JRequest::checkToken() or die('Invalid Token'); // Instanz der Tabelle $row = JTable::getInstance('turniere', 'TableCLM'); $row->load($this->turnierid); $clmAccess = clm_core::$access; if ($row->tl != clm_core::$access->getJid() and $clmAccess->access('BE_tournament_edit_round') !== true or $clmAccess->access('BE_tournament_edit_round') === false) { JError::raiseWarning(500, JText::_('TOURNAMENT_NO_ACCESS')); return false; } // Für runden_termine update $user = JFactory::getUser(); // Turnierdaten sammeln $tournament = new CLMTournament($this->turnierid, true); $this->teil = $tournament->data->teil; $turParams = new clm_class_params($tournament->data->params); $pgnInput = $turParams->get('pgnInput', 1); // Anzahl gemeldeter Teilnehmer sammeln $sum_tln = $tournament->getPlayersIn(); // Anzahl Spieler abgleichen bevor gemeldet werden kann if ($sum_tln != $this->teil) { $diff = $this->teil - $sum_tln; JError::raiseWarning(500, JText::_('INSUFFICIENT_PLAYERS_REGISTERED')); JError::raiseNotice(6000, JText::_('ADD_PLAYERS_OR_CHANGE_PARAMETERS')); return false; } // Reale RundenNummer, DG aus RundenID ermitteln - zudem 'gemeldet' für späteren Abgleich $query = 'SELECT nr, dg, gemeldet, tl_ok' . ' FROM #__clm_turniere_rnd_termine' . ' WHERE id = ' . $this->roundid; $this->_db->setQuery($query); list($runde, $dg, $gemeldet, $tl_ok) = $this->_db->loadRow(); if ($tl_ok == 1) { // Runden schon bestätigt? JError::raiseWarning(500, CLMText::errorText(JText::_('ROUND'), 'ALREADYAPPROVED')); return false; } // Datensätze in Spielertabelle schreiben // convert Array nur für SCHWARZ !! $convert = array(0 => 1, 0, 2, 3, 5, 4, 6, 7, 8, 10, 9); // andere Matrix für eid // daten ermitteln $array_w = JRequest::getVar('w'); $array_b = JRequest::getVar('b'); $array_res = JRequest::getVar('res'); if ($pgnInput == 1) { $array_pgn = JRequest::getVar('pgn'); } $array_ergebnis = array(); // Array für bisherige Ergebnisse (Weiß) if ($tournament->data->typ == 3 or $tournament->data->typ == 5) { // KO $array_tiebrS = JRequest::getVar('tiebrS'); $array_tiebrG = JRequest::getVar('tiebrG'); $array_tiebrS_old = array(); $array_tiebrG_old = array(); } $array_id = array(); // Array für ID des nicht-heim-Matches $array_idBlack = array(); // für MatchID des schwarzen Datensatzes $array_duplo = array(); // Array für alle Startnummern, um Doppelungen abzuchecken // alle Matches anhand der weißen Daten durchgehen - evtl fehlerhafte Daten ausschließen foreach ($array_w as $key => $value) { // $key - die ID des Matches // $value - die snr des Weißen // $array_b[$key] - die snr des Schwarzen // $array_res[$key] - dir ID des Ergebnisses // check: Match vorhanden? mit 'heim' und in diesem Turnier? if ($tournament->data->typ != 3 and $tournament->data->typ != 5) { // nicht KO // brett ermitteln, um zweiten Match-Datensatz ermitteln zu können $query = 'SELECT brett, ergebnis, pgn' . ' FROM #__clm_turniere_rnd_spl' . ' WHERE id = ' . $key . ' AND turnier = \'' . $this->turnierid . '\' AND heim = \'1\''; $this->_db->setQuery($query); if (!(list($brettBlack, $array_ergebnis[$key], $array_pgnold[$key]) = $this->_db->loadRow())) { JError::raiseWarning(500, JText::_('MATCH_UNKNOWN') . " - ID: " . $key); // aus Array entfernen! unset($array_w[$key]); } } else { // KO // brett ermitteln, um zweiten Match-Datensatz ermitteln zu können // zudem ergebnis und tiebr nachladen $query = 'SELECT brett, ergebnis, tiebrS, tiebrG, pgn' . ' FROM #__clm_turniere_rnd_spl' . ' WHERE id = ' . $key . ' AND turnier = \'' . $this->turnierid . '\' AND heim = \'1\''; $this->_db->setQuery($query); if (!(list($brettBlack, $array_ergebnis[$key], $array_tiebrS_old[$key], $array_tiebrG_old[$key], $array_pgnold[$key]) = $this->_db->loadRow())) { JError::raiseWarning(500, JText::_('MATCH_UNKNOWN') . " - ID: " . $key); // aus Array entfernen! unset($array_w[$key]); } } // check: zweiter Datensatz zu diesem match vorhanden? anhand von $brett // ID ermitteln und zwischenspeichern $query = "SELECT id" . " FROM #__clm_turniere_rnd_spl" . " WHERE turnier = '" . $this->turnierid . "' AND runde = '{$runde}' AND dg = '{$dg}' AND heim = '0' AND brett = " . $brettBlack; $this->_db->setQuery($query); if (!($array_idBlack[$key] = $this->_db->loadResult())) { JError::raiseWarning(500, JText::_('MATCH_UNKNOWN') . " - ID: " . $key); // aus Array entfernen! unset($array_w[$key]); } else { $array_id[$key] = $id; } // alle Startnummern in Duplo-Array eintragen (wenn Startnummer vorhanden) if ($value > 0) { $array_duplo[] = $value; } if ($array_b[$key] > 0) { $array_duplo[] = $array_b[$key]; } } // Duplo-Kontrolle - nicht im freien System if ($tournament->data->typ != 6 and count($array_duplo) > count(array_unique($array_duplo))) { JError::raiseWarning(500, JText::_("PLAYER_ENTERED_TWICE")); return false; } $countChanges = 0; // noch vorhandene Matches erneut durchgehen foreach ($array_w as $key => $value) { // liegt Änderung vor? if ($tournament->data->typ != 3 and $tournament->data->typ != 5) { // nicht KO if (is_null($array_ergebnis[$key]) and $array_res[$key] >= 0 or !is_null($array_ergebnis[$key]) and $array_res[$key] != $array_ergebnis[$key] or $pgnInput == 1 and $array_pgn[$key] != $array_pgnold[$key]) { // Änderung? $countChanges++; } } else { // KO - checkt auch auf tiebreaker-Änderung! if (is_null($array_ergebnis[$key]) and $array_res[$key] >= 0 or !is_null($array_ergebnis[$key]) and $array_res[$key] != $array_ergebnis[$key] or $array_tiebrS_old[$key] != $array_tiebrS[$key] or $array_tiebrG_old[$key] != $array_tiebrG[$key] or $pgnInput == 1 and $array_pgn[$key] != $array_pgnold[$key]) { // Änderung? $countChanges++; // dann aber auch ermitteln, wer ausscheidet, und wer im Turnier bleibt. if ($array_res[$key] == 2 or $array_res[$key] == 3 or $array_res[$key] == 6 or $array_res[$key] == 7) { // remis bzw. nicht gespielt // if ($array_res[$key] == 2) { // remis if ($array_tiebrS[$key] > $array_tiebrG[$key]) { // sofort schreiben $this->_updateTlnrKoStatus($value, 1, $runde); $this->_updateTlnrKoStatus($array_b[$key], 0, $runde); } elseif ($array_tiebrS[$key] < $array_tiebrG[$key]) { // sofort schreiben $this->_updateTlnrKoStatus($value, 0, $runde); $this->_updateTlnrKoStatus($array_b[$key], 1, $runde); } else { // gleich - beide noch drin! $this->_updateTlnrKoStatus($value, 1, $runde); $this->_updateTlnrKoStatus($array_b[$key], 1, $runde); } } elseif ($array_res[$key] == 1 or $array_res[$key] == 5) { // sofort schreiben $this->_updateTlnrKoStatus($value, 1, $runde); $this->_updateTlnrKoStatus($array_b[$key], 0, $runde); } elseif ($array_res[$key] == 0 or $array_res[$key] == 4) { // sofort schreiben $this->_updateTlnrKoStatus($value, 0, $runde); $this->_updateTlnrKoStatus($array_b[$key], 1, $runde); } } } // jetzt die beiden Datesätze updaten if ($array_res[$key] == '-1' or $array_res[$key] == '-2') { // kein Resultat eingegeben $sqlResultW = "NULL"; $sqlResultB = "NULL"; } else { $sqlResultW = "'" . $array_res[$key] . "'"; $sqlResultB = "'" . $convert[$array_res[$key]] . "'"; } // für pgn if ($pgnInput == 1) { $sqlPGN = ", pgn = '" . $array_pgn[$key] . "'"; } else { $sqlPGN = ""; } if ($tournament->data->typ != 3 and $tournament->data->typ != 5) { // nicht KO // Weiss $query = "UPDATE #__clm_turniere_rnd_spl" . " SET ergebnis = " . $sqlResultW . ", tln_nr = '" . $value . "', spieler = '" . $value . "', gegner = '" . $array_b[$key] . "'" . $sqlPGN . " WHERE id = " . $key; $this->_db->setQuery($query); $this->_db->query(); // Schwarz $query = "UPDATE #__clm_turniere_rnd_spl" . " SET ergebnis = " . $sqlResultB . ", tln_nr ='" . $array_b[$key] . "', spieler ='" . $array_b[$key] . "', gegner ='" . $value . "'" . $sqlPGN . " WHERE id = " . $array_idBlack[$key]; $this->_db->setQuery($query); $this->_db->query(); } else { // KO - auch tiebreak schreiben // Weiss $query = "UPDATE #__clm_turniere_rnd_spl" . " SET ergebnis = " . $sqlResultW . ", tiebrS = '" . $array_tiebrS[$key] . "', tiebrG = '" . $array_tiebrG[$key] . "', tln_nr = '" . $value . "', spieler = '" . $value . "', gegner = '" . $array_b[$key] . "'" . $sqlPGN . " WHERE id = " . $key; $this->_db->setQuery($query); $this->_db->query(); // Schwarz $query = "UPDATE #__clm_turniere_rnd_spl" . " SET ergebnis = " . $sqlResultB . ", tiebrS = '" . $array_tiebrG[$key] . "', tiebrG = '" . $array_tiebrS[$key] . "', tln_nr ='" . $array_b[$key] . "', spieler ='" . $array_b[$key] . "', gegner ='" . $value . "'" . $sqlPGN . " WHERE id = " . $array_idBlack[$key]; $this->_db->setQuery($query); $this->_db->query(); } } // ergebnisse eingetragen // Nachrichten: // 1 - Matches wurden gespeichert // 2 - Anzahl ($countChanges) geänderter Erebnisse JError::raiseNotice(500, JText::_('MATCHES') . ' ' . JText::_('SAVED')); $stringAction = CLMText::sgpl($countChanges, JText::_('RESULT'), JText::_('RESULTS')) . " " . JText::_('SAVED') . "/" . JText::_('EDITED'); JError::raiseNotice(500, $stringAction); $tournament->calculateRanking(); $tournament->setRankingPositions(); // Runde gemeldet ? if ($gemeldet == NULL) { $query = "UPDATE #__clm_turniere_rnd_termine" . " SET gemeldet = " . $user->id . ", zeit = NOW()" . " WHERE turnier = " . $this->turnierid . " AND nr = " . $runde . " AND dg = " . $dg; } else { $query = "UPDATE #__clm_turniere_rnd_termine" . " SET editor = " . $user->id . ", edit_zeit = NOW()" . " WHERE turnier = " . $this->turnierid . " AND nr = " . $runde . " AND dg = " . $dg; } $this->_db->setQuery($query); $this->_db->query(); // Berechne oder Lösche die inoff. DWZ nach dieser Änderung $turParams = new clm_class_params(clm_core::$db->turniere->get($this->turnierid)->params); $autoDWZ = $turParams->get("autoDWZ", 0); if ($autoDWZ == 0) { clm_core::$api->direct("db_tournament_genDWZ", array($this->turnierid, false)); } else { if ($autoDWZ == 1) { clm_core::$api->direct("db_tournament_delDWZ", array($this->turnierid, false)); } } // Log schreiben $clmLog = new CLMLog(); $clmLog->aktion = $stringAction; $clmLog->params = array('tid' => $this->turnierid, 'rnd' => $runde); // TurnierID wird als LigaID gespeichert $clmLog->write(); return true; }
function clm_api_db_tournament() { $table = '#__clm_turniere'; $primaryKey = 'id'; $columns = array(array('db' => 'id', 'dt' => 0), array('db' => 'name', 'dt' => 1), array('db' => 'sid', 'dt' => 2), array('db' => 'dateStart', 'dt' => 3), array('db' => 'invitationText', 'dt' => 4), array('db' => 'vereinZPS', 'dt' => 5), array('db' => 'typ', 'dt' => 6), array('db' => 'runden', 'dt' => 7), array('db' => 'teil', 'dt' => 8), array('db' => 'tl', 'dt' => 9), array('db' => 'id', 'dt' => 10), array('db' => 'rnd', 'dt' => 11), array('db' => 'published', 'dt' => 12), array('db' => 'ordering', 'dt' => 13), array('db' => 'id', 'dt' => 14)); $allowed = array("typ" => "i", "published" => "i", "sid" => "i", "catidAlltime:catidEdition" => "i"); $out = clm_class_DataTables::simple($_POST, $table, $primaryKey, $columns, $allowed, clm_core::$db); $lang = clm_core::$lang->tournament; $clmAccess = clm_core::$access; for ($i = 0; $i < count($out["data"]); $i++) { $out["data"][$i][0] = $i + 1; $out["data"][$i][1] = clm_class_category::name($out["data"][$i][14], false); if (!($out["data"][$i][9] != $clmAccess->getJid() and $clmAccess->access('BE_tournament_edit_detail') !== true or $clmAccess->access('BE_tournament_edit_detail') === false)) { $out["data"][$i][1] = '<a href="' . clm_core::$load->gen_url(array("view" => "turform", "task" => "edit", "id" => $out["data"][$i][14])) . '">' . $out["data"][$i][1] . '</a>'; } // Saisonname statt sid Anzeigen $sid = intval($out["data"][$i][2]); $out["data"][$i][2] = clm_core::$db->saison->get($sid)->name; // dateStart durch dateStart und dateEnd ersetzen if (clm_core::$db->turniere->get($out["data"][$i][14])->dateStart != '0000-00-00') { $out["data"][$i][3] = clm_core::$load->date_to_string(clm_core::$db->turniere->get($out["data"][$i][14])->dateStart, false, true); if (clm_core::$db->turniere->get($out["data"][$i][14])->dateEnd != '0000-00-00') { $out["data"][$i][3] .= " " . $lang->until . " " . clm_core::$load->date_to_string(clm_core::$db->turniere->get($out["data"][$i][14])->dateEnd, false, true); } } else { $out["data"][$i][3] = $lang->unknownDate; } // Veranstalter / Ausrichter $out["data"][$i][5] = clm_core::$load->zps_to_district($out["data"][$i][5]); if (clm_core::$db->turniere->get($out["data"][$i][14])->bezirkTur == 1) { $out["data"][$i][5] = $lang->districtEvent . ($out["data"][$i][5] != "" ? "<br />" . $out["data"][$i][5] : ""); } // Ausschreibung if ($out["data"][$i][4] == "") { $out["data"][$i][4] = $lang->column3_no; } else { $out["data"][$i][4] = $lang->column3_yes; } if (!($out["data"][$i][9] != $clmAccess->getJid() and $clmAccess->access('BE_tournament_edit_detail') !== true or $clmAccess->access('BE_tournament_edit_detail') === false)) { $out["data"][$i][4] = '<a href="' . clm_core::$load->gen_url(array("view" => "turinvite", "task" => "edit", "id" => $out["data"][$i][14])) . '">' . $out["data"][$i][4] . '</a>'; } // Modus ID in Name umsetzen $out["data"][$i][6] = clm_core::$load->mode_to_name(intval($out["data"][$i][6]), false); // eingetragene Teilnehmer $query = 'SELECT COUNT(id)' . ' FROM #__clm_turniere_tlnr' . ' WHERE turnier = ' . $out["data"][$i][14]; if (!($out["data"][$i][9] != $clmAccess->getJid() and $clmAccess->access('BE_tournament_edit_detail') !== true or $clmAccess->access('BE_tournament_edit_detail') === false)) { $out["data"][$i][8] = '<a href="' . clm_core::$load->gen_url(array("view" => "turplayers", "task" => "edit", "id" => $out["data"][$i][14])) . '">' . $out["data"][$i][8] . " " . $lang->player . '</a>' . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->registered . $lang->close; } else { $out["data"][$i][8] = $out["data"][$i][8] . " " . $lang->player . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->registered . $lang->close; } // Runden mit Bestätigung/tl_ok // eingetragene Teilnehmer $query = 'SELECT COUNT(id)' . ' FROM #__clm_turniere_rnd_termine' . ' WHERE turnier = ' . $out["data"][$i][14] . ' AND tl_ok = \'1\''; // Durchläufe Anzeigen if (clm_core::$db->turniere->get($out["data"][$i][14])->dg > 1) { $out["data"][$i][7] = clm_core::$db->turniere->get($out["data"][$i][14])->dg . " x " . $out["data"][$i][7]; } if (!($out["data"][$i][9] != $clmAccess->getJid() and $clmAccess->access('BE_tournament_edit_detail') !== true or $clmAccess->access('BE_tournament_edit_detail') === false)) { $out["data"][$i][7] = '<a href="' . clm_core::$load->gen_url(array("view" => "turrounds", "task" => "edit", "id" => $out["data"][$i][14])) . '">' . $out["data"][$i][7] . " " . $lang->rounds . '</a>' . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->confirmed . $lang->close; } else { $out["data"][$i][7] = $out["data"][$i][7] . " " . $lang->rounds . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->confirmed . $lang->close; } // Turnierleiter $query = 'SELECT name' . ' FROM #__clm_user' . ' WHERE jid = ' . $out["data"][$i][9] . ' AND sid = ' . $sid; $result = clm_core::$db->loadAssocList($query); if (count($result) == 1) { $out["data"][$i][9] = $result[0]["name"]; } else { $out["data"][$i][9] = "-"; } // DWZ berechnet $params = clm_core::$db->turniere->get($out["data"][$i][10])->params; $params = new clm_class_params($params); if ($params->get("inofDWZ", "0") == "1") { $out["data"][$i][10] = '<button class="clm_table_image" value=\'["db_tournament_delDWZ",[' . $out["data"][$i][14] . ',false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][10] = '<button class="clm_table_image" value=\'["db_tournament_genDWZ",[' . $out["data"][$i][14] . ',false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } // Runden freigegeben if ($out["data"][$i][11] == 1) { $out["data"][$i][11] = '<button class="clm_table_image clm_button_del_danger" value=\'["db_tournament_delRounds",[' . $out["data"][$i][14] . ',false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][11] = '<button class="clm_table_image" value=\'["db_tournament_genRounds",[' . $out["data"][$i][14] . ',false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } // Veröffentlicht if ($out["data"][$i][12] == 1) { $out["data"][$i][12] = '<button class="clm_table_image " value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',false,false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][12] = '<button class="clm_table_image" value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',true,false]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } $out["data"][$i][13] = '<input class="clm_table_orderingBox" onkeypress="return clm_isChangeNumber(event);" value="' . $out["data"][$i][13] . '" type="text">'; $out["data"][$i][13] .= '<input class="clm_table_orderingId" value="' . $out["data"][$i][14] . '" type="hidden">'; } return array(true, "m_tableSuccess", $out); }
function _getPlayerPhoto() { // JoomGallery-Parameter auswerten $turParams = new clm_class_params($this->turnier->params); $this->joomGalleryPhotosWidth = $turParams->get('joomGalleryPhotosWidth', ''); if (!is_numeric($this->joomGalleryPhotosWidth)) { $this->joomGalleryPhotosWidth = 0; } $joomGalleryDisplayPlayerPhotos = $turParams->get('joomGalleryDisplayPlayerPhotos', 0); $joomGalleryCatId = $turParams->get('joomGalleryCatId', ''); if ($joomGalleryDisplayPlayerPhotos == 1 and $joomGalleryCatId != '') { $query = "SELECT id" . " FROM #__joomgallery" . " WHERE catid = " . $joomGalleryCatId . " AND ordering = " . $this->snr; $this->_db->setQuery($query); $playerPhotoId = $this->_db->loadObject(); if (isset($playerPhotoId->id)) { $this->playerPhoto = $playerPhotoId->id; } else { $this->playerPhoto = ''; } } else { $this->playerPhoto = ''; } }
/** * errechnet/aktualisiert Rangliste/Punktesummen eines Turniers */ function calculateRanking() { // Parameter auslesen, für FIDE-Ranglistenkorrektur und TWZ $query = 'SELECT `params`' . ' FROM #__clm_turniere' . ' WHERE id = ' . $this->turnierid; $this->_db->setQuery($query); $turParams = new clm_class_params($this->_db->loadResult()); $paramTBFideCorrect = $turParams->get('optionTiebreakersFideCorrect', 0); $paramuseAsTWZ = $turParams->get('useAsTWZ', 0); $query = ' *' . ' FROM #__clm_turniere' . ' WHERE id = ' . $this->turnierid; $this->_db->setQuery($query); $dg = $this->data->dg; $runden = $this->data->runden; $teil = $this->data->teil; if ($this->data->typ != 1) { $paramTBFideCorrect = 0; } $sieg = $this->data->sieg; $siegs = $this->data->siegs; $remis = $this->data->remis; $remiss = $this->data->remiss; $nieder = $this->data->nieders; $niederk = $this->data->niederk; //Turnierteilnehmer $query = " SELECT a.* " . " FROM #__clm_turniere_tlnr as a " . " WHERE turnier = " . $this->turnierid . " ORDER BY a.snr "; $this->_db->setQuery($query); $player = $this->_db->loadObjectList(); // TWZ ggf. korrigieren foreach ($player as $player1) { if ($paramuseAsTWZ == 0) { if ($player1->FIDEelo >= $player1->start_dwz) { $player1->twz = $player1->FIDEelo; } else { $player1->twz = $player1->start_dwz; } } elseif ($paramuseAsTWZ == 1) { if ($player1->start_dwz > 0) { $player1->twz = $player1->start_dwz; } else { $player1->twz = $player1->FIDEelo; } } elseif ($paramuseAsTWZ == 2) { if ($player1->FIDEelo > 0) { $player1->twz = $player1->FIDEelo; } else { $player1->twz = $player1->start_dwz; } } } //bisherige Rankingdaten löschen $query = "UPDATE #__clm_turniere_tlnr" . " SET sum_punkte = 0, sum_wins = 0, " . " anz_spiele = 0, " . " sumTiebr1 = 0, sumTiebr2 = 0, sumTiebr3 = 0 " . " WHERE turnier = " . $this->turnierid; $this->_db->setQuery($query); $this->_db->query(); // alle FW in Array schreiben $arrayFW = array(); for ($tb = 1; $tb <= 3; $tb++) { $fieldname = 'tiebr' . $tb; $arrayFW[$tb] = $this->data->{$fieldname}; } // für alle Spieler Datensätze mit Summenwert 0 anlegen // TODO: da gab es einen eigenen PHP-Befehl für?! $array_PlayerSpiele = array(); $array_PlayerPunkte = array(); $array_PlayerPunkteTB = array(); // Punkte, die für Feinwertungen herangezogen werden $array_PlayerBuch = array(); $array_PlayerBuchOpp = array(); $array_PlayerBuch1St = array(); $array_PlayerBuchm11 = array(); $array_PlayerBuchm22 = array(); $array_PlayerSoBe = array(); $array_PlayerSoBeOpp = array(); $array_PlayerBuSum = array(); $array_PlayerBuSum1St = array(); $array_PlayerWins = array(); $array_PlayerElo = array(); $array_PlayerEloOpp = array(); $array_PlayerElo1St = array(); $array_PlayerSumWert = array(); $array_PlayerBuSumMin = array(); $array_PlayerBuSum1StMin = array(); $array_PlayerDWZ = array(); $array_PlayerDWZOpp = array(); $array_PlayerDWZ1St = array(); $array_PlayerTWZ = array(); $array_PlayerTWZOpp = array(); $array_PlayerTWZ1St = array(); for ($s = 0; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen $array_PlayerSpiele[$s] = 0; $array_PlayerPunkte[$s] = 0; $array_PlayerPunkteTB[$s] = 0; $array_PlayerBuch[$s] = 0; $array_PlayerBuch1ST[$s] = 0; $array_PlayerBuchm11[$s] = 0; $array_PlayerBuchm22[$s] = 0; $array_PlayerSoBe[$s] = 0; $array_PlayerSoBeMin[$s] = 999; $array_PlayerBuSum[$s] = 0; $array_PlayerBuSum1St[$s] = 0; $array_PlayerBuSumMin[$s] = 999; $array_PlayerBuSum1StMin[$s] = 999; $array_PlayerWins[$s] = 0; $array_PlayerElo[$s] = 0; $array_PlayerElo1St[$s] = 0; $array_PlayerSumWert[$s] = 0; $array_PlayerDWZ[$s] = 0; $array_PlayerDWZ1St[$s] = 0; $array_PlayerTWZ[$s] = 0; $array_PlayerTWZ1St[$s] = 0; } // alle Matches in DatenArray schreiben $query = "SELECT m.tln_nr, m.heim, m.gegner, m.dg, m.runde, m.ergebnis, tl.FIDEelo, tl.start_dwz, tl.twz FROM `#__clm_turniere_rnd_spl` as m" . " LEFT JOIN #__clm_turniere_tlnr as tl ON tl.turnier = m.turnier AND tl.snr = m.gegner " . " WHERE m.turnier = " . $this->turnierid . " AND m.ergebnis IS NOT NULL"; $this->_db->setQuery($query); $matchData = $this->_db->loadObjectList(); $z = count($matchData); // Finden der letzten gespielten Runde // und Anlegen einer Matrix der gesetzten Matches $maxround = 0; $matrix = array(); foreach ($matchData as $key => $value) { if (($value->ergebnis < 3 or $value->ergebnis > 8) and ($value->dg - 1) * $runden + $value->runde > $maxround) { $maxround = ($value->dg - 1) * $runden + $value->runde; } $matrix[$value->tln_nr][$value->dg][$value->runde] = 1; } // für Spieler, die nicht gesetzt wurden, werden spielfreie Pseudo-Paarungen angelegt (für FIDE-Ranglistenkorrektur) for ($s = 1; $s <= $teil; $s++) { // alle Startnummern durchgehen for ($d = 1; $d <= $dg; $d++) { // alle Durchgänge durchgehen for ($r = 1; $r <= $runden; $r++) { // alle Runden durchgehen if ($maxround < ($d - 1) * $runden + $r) { break; } // nur bis zur aktuellen Runde if (!isset($matrix[$s][$d][$r])) { $matchData[$z] = new stdClass(); $matchData[$z]->tln_nr = $s; $matchData[$z]->heim = 1; $matchData[$z]->gegner = 0; $matchData[$z]->dg = $d; $matchData[$z]->runde = $r; $matchData[$z]->ergebnis = 8; // spielfrei $z++; } } } } // Punkte/Siege // alle Matches durchgehen -> Spieler erhalten Punkte und Wins foreach ($matchData as $key => $value) { if ($maxround < ($value->dg - 1) * $runden + $value->runde) { continue; } // Ignorieren von bereits gesetzten kampflos oder spielfrei in Folgerunden if ($value->tln_nr == 0) { continue; } //techn. Teilnehmer bei ungerader Teilnehmerzahl if ($value->heim == 1) { $vsieg = $sieg; } else { $vsieg = $siegs; } if ($value->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } //if ($value->ergebnis == 8) continue; //spielfrei if ($value->ergebnis != 8) { $array_PlayerSpiele[$value->tln_nr] += 1; } if ($value->ergebnis == 2 or $value->ergebnis == 10) { // remis if ($value->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } $array_PlayerPunkte[$value->tln_nr] += $vremis; $array_PlayerPunkteTB[$value->tln_nr] += $vremis; $array_PlayerSumWert[$value->tln_nr] += $vremis * ($maxround - $value->runde + 1); } elseif ($value->ergebnis == 1 or $value->ergebnis == 5) { // Sieger $array_PlayerPunkte[$value->tln_nr] += $vsieg; $array_PlayerWins[$value->tln_nr] += 1; $array_PlayerSumWert[$value->tln_nr] += $maxround - $value->runde + 1; if ($value->ergebnis == 5 and $paramTBFideCorrect == 1) { // kampflos gewonnen und FIDE-Korrektur eingestellt? $array_PlayerPunkteTB[$value->tln_nr] += $vremis; // FW-Korrektur Teil 1 } else { $array_PlayerPunkteTB[$value->tln_nr] += $vsieg; } } elseif ($value->ergebnis == 4 and $paramTBFideCorrect == 1) { // kampflos verloren und FIDE-Korrektur eingestellt? $array_PlayerPunkteTB[$value->tln_nr] += $vremis; // FW-Korrektur Teil 1 } elseif ($value->ergebnis == 8 and $paramTBFideCorrect == 1) { // spielfrei und FIDE-Korrektur eingestellt? $array_PlayerPunkteTB[$value->tln_nr] += $vremis; // FW-Korrektur Teil 1 } elseif ($value->ergebnis == 3 and $paramTBFideCorrect == 1) { // Ergebnis 0-0 und FIDE-Korrektur eingestellt? $array_PlayerPunkteTB[$value->tln_nr] += $vremis; // FW-Korrektur Teil 1 } elseif ($value->ergebnis == 6 and $paramTBFideCorrect == 1) { // kampflos beide verloren -:- und FIDE-Korrektur eingestellt? $array_PlayerPunkteTB[$value->tln_nr] += $vremis; // FW-Korrektur Teil 1 } } // Buchholz & Sonneborn-Berger // erneut alle Matches durchgehen -> Spieler erhalten Feinwertungen foreach ($matchData as $key => $value) { if ($maxround < ($value->dg - 1) * $runden + $value->runde) { continue; } // Ignorieren von bereits gesetzten kampflos oder spielfrei in Folgerunden //if ($value->tln_nr == 0) continue; // Ignorieren von techn. Spielern // Buchholz if (in_array(1, $arrayFW) or in_array(2, $arrayFW) or in_array(11, $arrayFW) or in_array(12, $arrayFW) or in_array(5, $arrayFW) or in_array(15, $arrayFW)) { // beliebige Buchholz als TieBreaker gewünscht? if ($value->ergebnis < 3 or $value->ergebnis > 8 or $paramTBFideCorrect == 0) { $array_PlayerBuchOpp[$value->tln_nr][] = $array_PlayerPunkteTB[$value->gegner]; // Array mit Gegnerwerten - für Streichresultat } else { //Ranglistenkorrektur nach FIDE (Teil 2) nur für CH-Turniere $query = "SELECT tln_nr, heim, gegner, dg, runde, ergebnis FROM `#__clm_turniere_rnd_spl`" . " WHERE turnier = " . $this->turnierid . " AND tln_nr = " . $value->tln_nr . " AND ergebnis IS NOT NULL" . " ORDER BY dg ASC, runde ASC"; $this->_db->setQuery($query); $matchDataSnr = $this->_db->loadObjectList(); $PlayerPunkteKOR = 0; foreach ($matchDataSnr as $key => $valuesnr) { if ($maxround < ($valuesnr->dg - 1) * $runden + $valuesnr->runde) { continue; } // Ignorieren von bereits gesetzten kampflos oder spielfrei in Folgerunden if ($valuesnr->dg < $value->dg or $valuesnr->dg == $value->dg and $valuesnr->runde < $value->runde) { if ($valuesnr->heim == 1) { $vsieg = $sieg; } else { $vsieg = $siegs; } if ($valuesnr->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } if ($valuesnr->ergebnis == 1) { $PlayerPunkteKOR += $vsieg; } elseif ($valuesnr->ergebnis == 2 or $valuesnr->ergebnis == 10) { $PlayerPunkteKOR += $vremis; } elseif ($valuesnr->ergebnis == 5) { $PlayerPunkteKOR += $vsieg; } // Sieg kampflos } } if ($value->heim == 1) { $vsieg = $sieg; } else { $vsieg = $siegs; } if ($value->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } if ($value->ergebnis == 4 or $value->ergebnis == 8) { $PlayerPunkteKOR += $vsieg; } // Gegner gewinnt kampflos oder spielfrei if ($value->ergebnis == 3 or $value->ergebnis == 6) { $PlayerPunkteKOR += $vsieg; } // Gegner verliert auch kampflos, ist aber egal //$PlayerPunkteKOR += 0.5 * (($runden * $dg) - (($value->dg - 1) * $runden) - $value->runde); $PlayerPunkteKOR += $vremis * ($maxround - ($value->dg - 1) * $runden - $value->runde); $array_PlayerBuchOpp[$value->tln_nr][] = $PlayerPunkteKOR; // Array mit Gegnerwerten - für Streichresultat } } // Sonneborn-Berger if (in_array(3, $arrayFW) or in_array(13, $arrayFW)) { // SoBe als ein TieBreaker gewünscht? if ($value->ergebnis == 0 or $value->ergebnis == 9) { $array_PlayerSoBeOpp[$value->tln_nr][] = 0; // Array mit Gegnerwerten - für Streichresultat } elseif ($value->ergebnis == 1) { $array_PlayerSoBeOpp[$value->tln_nr][] = $array_PlayerPunkteTB[$value->gegner]; // Array mit Gegnerwerten - für Streichresultat } elseif ($value->ergebnis == 2 or $value->ergebnis == 10) { $array_PlayerSoBeOpp[$value->tln_nr][] = 0.5 * $array_PlayerPunkteTB[$value->gegner]; // Array mit Gegnerwerten - für Streichresultat } elseif ($value->ergebnis == 5 and $paramTBFideCorrect == 0) { $array_PlayerSoBeOpp[$value->tln_nr][] = $array_PlayerPunkteTB[$value->gegner]; // Array mit Gegnerwerten - für Streichresultat } elseif ($paramTBFideCorrect == 0) { $array_PlayerSoBeOpp[$value->tln_nr][] = 0; // Array mit Gegnerwerten - für Streichresultat } else { //Ranglistenkorrektur nach FIDE (Teil 2) $query = "SELECT tln_nr, heim, gegner, dg, runde, ergebnis FROM `#__clm_turniere_rnd_spl`" . " WHERE turnier = " . $this->turnierid . " AND tln_nr = " . $value->tln_nr . " AND ergebnis IS NOT NULL" . " ORDER BY dg ASC, runde ASC"; $this->_db->setQuery($query); $matchDataSnr = $this->_db->loadObjectList(); $PlayerPunkteKOR = 0; foreach ($matchDataSnr as $key => $valuesnr) { if ($maxround < ($valuesnr->dg - 1) * $runden + $valuesnr->runde) { continue; } // Ignorieren von bereits gesetzten kampflos oder spielfrei in Folgerunden if ($valuesnr->heim == 1) { $vsieg = $sieg; } else { $vsieg = $siegs; } if ($valuesnr->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } if ($valuesnr->dg < $value->dg or $valuesnr->dg == $value->dg and $valuesnr->runde < $value->runde) { if ($valuesnr->ergebnis == 1) { $PlayerPunkteKOR += $vsieg; } elseif ($valuesnr->ergebnis == 2) { $PlayerPunkteKOR += $vremis; } elseif ($valuesnr->ergebnis == 5) { $PlayerPunkteKOR += $vsieg; } // Sieg kampflos } } if ($value->heim == 1) { $vsieg = $sieg; } else { $vsieg = $siegs; } if ($value->heim == 1) { $vremis = $remis; } else { $vremis = $remiss; } if ($value->ergebnis == 5) { $PlayerFaktorKOR = $vsieg; } else { $PlayerFaktorKOR = 0; } $PlayerPunkteKOR += $vremis * ($maxround - ($value->dg - 1) * $runden - $value->runde); //echo "<br>p: $value->tln_nr PlayerPunkteKOR: "; var_dump($PlayerPunkteKOR); $array_PlayerSoBeOpp[$value->tln_nr][] = $PlayerFaktorKOR * $PlayerPunkteKOR; // Array mit Gegnerwerten - für Streichresultat } //echo "<br>p: $value->tln_nr array_PlayerSoBeOpp: "; var_dump($array_PlayerSoBeOpp[$value->tln_nr]); } // Elo-Schnitt if (in_array(6, $arrayFW) or in_array(16, $arrayFW)) { // Elo-Schnitt als ein TieBreaker gewünscht? if ($value->gegner == 0) { //$array_PlayerEloOpp[$value->tln_nr][] = 0; // Array mit Gegnerwerten - für Streichresultat } else { if ($value->FIDEelo > 0) { $array_PlayerEloOpp[$value->tln_nr][] = $value->FIDEelo; } else { $array_PlayerEloOpp[$value->tln_nr][] = $value->start_dwz; } } // Array mit Gegnerwerten - für Streichresultat } // DWZ-Schnitt if (in_array(8, $arrayFW) or in_array(18, $arrayFW)) { // DWZ-Schnitt als ein TieBreaker gewünscht? if ($value->gegner == 0) { //$array_PlayerDWZOpp[$value->tln_nr][] = 0; // Array mit Gegnerwerten - für Streichresultat } else { if ($value->start_dwz > 0) { $array_PlayerDWZOpp[$value->tln_nr][] = $value->start_dwz; } else { $array_PlayerDWZOpp[$value->tln_nr][] = $value->FIDEelo; } } // Array mit Gegnerwerten - für Streichresultat } // TWZ-Schnitt if (in_array(9, $arrayFW) or in_array(19, $arrayFW)) { // TWZ-Schnitt als ein TieBreaker gewünscht? if ($value->gegner == 0) { //$array_PlayerTWZOpp[$value->tln_nr][] = 0; // Array mit Gegnerwerten - für Streichresultat } else { if ($value->twz > 0) { $array_PlayerTWZOpp[$value->tln_nr][] = $value->twz; } else { $array_PlayerTWZOpp[$value->tln_nr][] = $value->start_dwz; } } // Array mit Gegnerwerten - für Streichresultat } } // Sonneborn-Berger if (in_array(3, $arrayFW)) { // normale Sonneborn-Berger als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerSoBeOpp[$s])) { $array_PlayerSoBe[$s] = 0; } elseif (count($array_PlayerSoBeOpp[$s]) == 1) { $array_PlayerSoBe[$s] = $array_PlayerSoBeOpp[$s][0]; } else { $array_PlayerSoBe[$s] = array_sum($array_PlayerSoBeOpp[$s]); } } } elseif (in_array(13, $arrayFW)) { // Sonneborn-Berger mit Streichresultat for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerSoBeOpp[$s])) { $array_PlayerSoBe[$s] = 0; } elseif (count($array_PlayerSoBeOpp[$s]) == 0) { $array_PlayerSoBe[$s] = 0; } elseif (count($array_PlayerSoBeOpp[$s]) == 1) { $array_PlayerSoBe[$s] = $array_PlayerSoBeOpp[$s][0]; } elseif (count($array_PlayerSoBeOpp[$s]) > 2) { //== ($dg * $runden)) $array_PlayerSoBe[$s] = array_sum($array_PlayerSoBeOpp[$s]) - min($array_PlayerSoBeOpp[$s]); } else { $array_PlayerSoBe[$s] = array_sum($array_PlayerSoBeOpp[$s]); } } } // Buchholz if (in_array(1, $arrayFW) or in_array(2, $arrayFW) or in_array(11, $arrayFW) or in_array(12, $arrayFW)) { // normale Buchholz als TieBreaker gewünscht? for ($s = 0; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerBuchOpp[$s])) { $array_PlayerBuch[$s] = 0; } elseif (count($array_PlayerBuchOpp[$s]) == 1) { $array_PlayerBuch[$s] = $array_PlayerBuchOpp[$s][0]; } else { $array_PlayerBuch[$s] = array_sum($array_PlayerBuchOpp[$s]); } } } // Buchholz 1 Streichresultat if (in_array(11, $arrayFW) or in_array(12, $arrayFW)) { // Buchholz mit Streichresultat for ($s = 0; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerBuchOpp[$s])) { $array_PlayerBuch1St[$s] = 0; } elseif (count($array_PlayerBuchOpp[$s]) == 0) { $array_PlayerBuch1St[$s] = 0; } elseif (count($array_PlayerBuchOpp[$s]) == 1) { $array_PlayerBuch1St[$s] = $array_PlayerBuchOpp[$s][0]; } elseif (count($array_PlayerBuchOpp[$s]) > 2) { //== ($dg * $runden)) $array_PlayerBuch1St[$s] = array_sum($array_PlayerBuchOpp[$s]) - min($array_PlayerBuchOpp[$s]); } else { $array_PlayerBuch1St[$s] = array_sum($array_PlayerBuchOpp[$s]); } } } // mittlere Buchholz 2 Streichresultate (höchstes und niedrigstes) if (in_array(5, $arrayFW)) { // Buchholz mit Streichresultat for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerBuchOpp[$s])) { $array_PlayerBuchm11[$s] = 0; } elseif (count($array_PlayerBuchOpp[$s]) == 0) { $array_PlayerBuchm11[$s] = 0; } elseif (count($array_PlayerBuchOpp[$s]) == 1) { $array_PlayerBuchm11[$s] = $array_PlayerBuchOpp[$s][0]; } elseif (count($array_PlayerBuchOpp[$s]) == 2) { $array_PlayerBuchm11[$s] = array_sum($array_PlayerBuchOpp[$s]); } elseif (count($array_PlayerBuchOpp[$s]) > 2) { //== ($dg * $runden)) $array_PlayerBuchm11[$s] = array_sum($array_PlayerBuchOpp[$s]) - min($array_PlayerBuchOpp[$s]) - max($array_PlayerBuchOpp[$s]); } else { $array_PlayerBuchm11[$s] = array_sum($array_PlayerBuchOpp[$s]); } } } // BuchholzSumme if (in_array(2, $arrayFW) or in_array(12, $arrayFW)) { // Buchholz-Summe als TieBreaker gewünscht? // erneut alle Matches durchgehen -> Spieler erhalten Buchholzsummen foreach ($matchData as $key => $value) { //if ($value->gegner >= 1) { $array_PlayerBuSum[$value->tln_nr] += $array_PlayerBuch[$value->gegner]; if ($array_PlayerBuSumMin[$value->tln_nr] > $array_PlayerBuch[$value->gegner]) { $array_PlayerBuSumMin[$value->tln_nr] = $array_PlayerBuch[$value->gegner]; } //} else $array_PlayerBuSumMin[$value->tln_nr] = 0; } } // BuchholzSumme mit Streichresultat if (in_array(12, $arrayFW)) { // als TieBreaker gewünscht? foreach ($matchData as $key => $value) { $array_PlayerBuSum1St[$value->tln_nr] += $array_PlayerBuch1St[$value->gegner]; if ($array_PlayerBuSum1StMin[$value->tln_nr] > $array_PlayerBuch1St[$value->gegner]) { $array_PlayerBuSum1StMin[$value->tln_nr] = $array_PlayerBuch1St[$value->gegner]; } } for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen $array_PlayerBuSum1St[$s] = $array_PlayerBuSum1St[$s] - $array_PlayerBuSum1StMin[$s]; } } // Elo-Schnitt if (in_array(6, $arrayFW)) { // Elo-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerEloOpp[$s])) { $array_PlayerElo[$s] = 0; } elseif (count($array_PlayerEloOpp[$s]) == 1) { $array_PlayerElo[$s] = $array_PlayerEloOpp[$s][0]; } else { $c_EloOpp = 0; foreach ($array_PlayerEloOpp[$s] as $EloOpp) { if ($EloOpp > 0) { $c_EloOpp++; } } if ($c_EloOpp == 0) { $array_PlayerElo[$s] = 0; } else { $array_PlayerElo[$s] = array_sum($array_PlayerEloOpp[$s]) / $c_EloOpp; } } } } // DWZ-Schnitt if (in_array(8, $arrayFW)) { // DWZ-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerDWZOpp[$s])) { $array_PlayerDWZ[$s] = 0; } elseif (count($array_PlayerDWZOpp[$s]) == 1) { $array_PlayerDWZ[$s] = $array_PlayerDWZOpp[$s][0]; } else { $c_DWZOpp = 0; foreach ($array_PlayerDWZOpp[$s] as $DWZOpp) { if ($DWZOpp > 0) { $c_DWZOpp++; } } if ($c_DWZOpp == 0) { $array_PlayerDWZ[$s] = 0; } else { $array_PlayerDWZ[$s] = array_sum($array_PlayerDWZOpp[$s]) / $c_DWZOpp; } } } } // TWZ-Schnitt if (in_array(9, $arrayFW)) { // TWZ-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerTWZOpp[$s])) { $array_PlayerTWZ[$s] = 0; } elseif (count($array_PlayerTWZOpp[$s]) == 1) { $array_PlayerTWZ[$s] = $array_PlayerTWZOpp[$s][0]; } else { $c_TWZOpp = 0; foreach ($array_PlayerTWZOpp[$s] as $TWZOpp) { if ($TWZOpp > 0) { $c_TWZOpp++; } } if ($c_TWZOpp == 0) { $array_PlayerTWZ[$s] = 0; } else { $array_PlayerTWZ[$s] = array_sum($array_PlayerTWZOpp[$s]) / $c_TWZOpp; } } } } // Elo-Schnitt mit Streichresultat if (in_array(16, $arrayFW)) { // Elo-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerEloOpp[$s])) { $array_PlayerElo1St[$s] = 0; } elseif (count($array_PlayerEloOpp[$s]) == 1) { $array_PlayerElo1St[$s] = 0; } else { $c_EloOpp = 0; foreach ($array_PlayerEloOpp[$s] as $EloOpp) { if ($EloOpp > 0) { $c_EloOpp++; } } if ($c_EloOpp == 0) { $array_PlayerElo1St[$s] = 0; } else { if (min($array_PlayerEloOpp[$s]) == 0) { $array_PlayerElo1St[$s] = array_sum($array_PlayerEloOpp[$s]) / $c_EloOpp; } elseif ($c_EloOpp == 1) { $array_PlayerElo1St[$s] = array_sum($array_PlayerEloOpp[$s]); } else { $array_PlayerElo1St[$s] = (array_sum($array_PlayerEloOpp[$s]) - min($array_PlayerEloOpp[$s])) / ($c_EloOpp - 1); } } } } } // DWZ-Schnitt mit Streichresultat if (in_array(18, $arrayFW)) { // DWZ-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerDWZOpp[$s])) { $array_PlayerDWZ1St[$s] = 0; } elseif (count($array_PlayerDWZOpp[$s]) == 1) { $array_PlayerDWZ1St[$s] = 0; } else { $c_DWZOpp = 0; foreach ($array_PlayerDWZOpp[$s] as $DWZOpp) { if ($DWZOpp > 0) { $c_DWZOpp++; } } if ($c_DWZOpp == 0) { $array_PlayerDWZ1St[$s] = 0; } else { if (min($array_PlayerDWZOpp[$s]) == 0) { $array_PlayerDWZ1St[$s] = array_sum($array_PlayerDWZOpp[$s]) / $c_DWZOpp; } elseif ($c_DWZOpp == 1) { $array_PlayerDWZ1St[$s] = array_sum($array_PlayerDWZOpp[$s]); } else { $array_PlayerDWZ1St[$s] = (array_sum($array_PlayerDWZOpp[$s]) - min($array_PlayerDWZOpp[$s])) / ($c_DWZOpp - 1); } } } } } // TWZ-Schnitt mit Streichresultat if (in_array(19, $arrayFW)) { // TWZ-Schnitt als TieBreaker gewünscht? for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen if (!isset($array_PlayerTWZOpp[$s])) { $array_PlayerTWZ1St[$s] = 0; } elseif (count($array_PlayerTWZOpp[$s]) == 1) { $array_PlayerTWZ1St[$s] = 0; } else { $c_TWZOpp = 0; foreach ($array_PlayerTWZOpp[$s] as $TWZOpp) { if ($TWZOpp > 0) { $c_TWZOpp++; } } if ($c_TWZOpp == 0) { $array_PlayerTWZ1St[$s] = 0; } else { if (min($array_PlayerTWZOpp[$s]) == 0) { $array_PlayerTWZ1St[$s] = array_sum($array_PlayerTWZOpp[$s]) / $c_TWZOpp; } elseif ($c_TWZOpp == 1) { $array_PlayerTWZ1St[$s] = array_sum($array_PlayerTWZOpp[$s]); } else { $array_PlayerTWZ1St[$s] = (array_sum($array_PlayerTWZOpp[$s]) - min($array_PlayerTWZOpp[$s])) / ($c_TWZOpp - 1); } } } } } // alle Spieler durchgehen und updaten (kein vorheriges Löschen notwendig) for ($s = 1; $s <= $this->data->teil; $s++) { // alle Startnummern durchgehen // den TiebrSummen ihre Werte zuordnen for ($tb = 1; $tb <= 3; $tb++) { $fieldname = 'tiebr' . $tb; switch ($this->data->{$fieldname}) { case 1: // buchholz $sumTiebr[$tb] = $array_PlayerBuch[$s]; break; case 2: // bhhlz.-summe $sumTiebr[$tb] = $array_PlayerBuSum[$s]; break; case 3: // sobe $sumTiebr[$tb] = $array_PlayerSoBe[$s]; break; case 4: // wins $sumTiebr[$tb] = $array_PlayerWins[$s]; break; case 5: // mittl. bhhlz mit 2 streichresultat $sumTiebr[$tb] = $array_PlayerBuchm11[$s]; break; case 6: // elo-schnitt $sumTiebr[$tb] = $array_PlayerElo[$s]; break; case 7: // summenwertung $sumTiebr[$tb] = $array_PlayerSumWert[$s]; break; case 8: // DWZ-schnitt $sumTiebr[$tb] = $array_PlayerDWZ[$s]; break; case 9: // TWZ-schnitt $sumTiebr[$tb] = $array_PlayerTWZ[$s]; break; case 11: // bhhlz mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerBuch1St[$s]; break; case 12: // bhhlz.-summe mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerBuSum1St[$s]; break; case 13: // sobe mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerSoBe[$s]; break; case 15: // mittl. bhhlz mit 4 streichresultat $sumTiebr[$tb] = $array_PlayerBuchm22[$s]; break; case 16: // elo-schnitt mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerElo1St[$s]; break; case 18: // DWZ-schnitt mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerDWZ1St[$s]; break; case 19: // TWZ-schnitt mit 1 streichresultat $sumTiebr[$tb] = $array_PlayerTWZ1St[$s]; break; case 29: // Prozentpunkte if ($array_PlayerSpiele[$s] == 0) { $sumTiebr[$tb] = 0; } else { $sumTiebr[$tb] = $array_PlayerPunkte[$s] * 100 / $array_PlayerSpiele[$s]; } break; case 51: // ordering $sumTiebr[$tb] = 1000 - $player[$s - 1]->ordering; break; default: $sumTiebr[$tb] = 0; } } if ($player[$s - 1]->twz == "") { $player[$s - 1]->twz = "0"; } $query = "UPDATE #__clm_turniere_tlnr" . " SET sum_punkte = " . $array_PlayerPunkte[$s] . ", sum_wins = " . $array_PlayerWins[$s] . ", " . " anz_spiele = " . $array_PlayerSpiele[$s] . ", " . " sumTiebr1 = " . $sumTiebr[1] . ", sumTiebr2 = " . $sumTiebr[2] . ", sumTiebr3 = " . $sumTiebr[3] . "," . " twz = " . $player[$s - 1]->twz . " WHERE turnier = " . $this->turnierid . " AND snr = " . $s; $this->_db->setQuery($query); $this->_db->query(); // nur zur Verzögerung, damit UPDATE fertig ist bevor unten SELECT startet for ($xx = 0; $xx <= 1000; $xx++) { } } if ($this->data->tiebr1 == 25 or $this->data->tiebr2 == 25 or $this->data->tiebr3 == 25) { $query = "SELECT * " . " FROM `#__clm_turniere_tlnr`" . " WHERE turnier = " . $this->turnierid . " ORDER BY sum_punkte DESC, sumTiebr1 DESC, sumTiebr2 DESC, sumTiebr3 DESC, snr ASC"; $this->_db->setQuery($query); $players = $this->_db->loadObjectList(); // alle Spieler durchgehen foreach ($players as $xvalue) { $sum_erg = 0; $id_dv = 0; // alle Spieler durchgehen foreach ($players as $yvalue) { if ($xvalue->snr == $yvalue->snr) { continue; } // sind x und y wertungsgleich ? if ($this->data->tiebr1 == 25 and $xvalue->sum_punkte == $yvalue->sum_punkte or $this->data->tiebr2 == 25 and $xvalue->sum_punkte == $yvalue->sum_punkte and $xvalue->sumTiebr1 == $yvalue->sumTiebr1 or $this->data->tiebr3 == 25 and $xvalue->sum_punkte == $yvalue->sum_punkte and $xvalue->sumTiebr1 == $yvalue->sumTiebr1 and $xvalue->sumTiebr2 == $yvalue->sumTiebr2) { $id_dv = 1; // alle Matches in DatenArray schreiben $query = "SELECT * FROM `#__clm_turniere_rnd_spl` as m" . " WHERE turnier = " . $this->turnierid . " AND ergebnis IS NOT NULL" . " AND tln_nr = " . $xvalue->snr . " AND gegner = " . $yvalue->snr; $this->_db->setQuery($query); $matchesdirect = $this->_db->loadObjectList(); $zdirect = count($matchesdirect); foreach ($matchesdirect as $mdvalue) { if ($mdvalue->ergebnis == 2 or $mdvalue->ergebnis == 10) { $sum_erg += 1; } elseif ($mdvalue->ergebnis == 1 or $mdvalue->ergebnis == 5) { $sum_erg += 2; } } } } if ($id_dv == 1) { $query = "UPDATE #__clm_turniere_tlnr"; if ($this->data->tiebr1 == 25) { $query .= " SET sumTiebr1 = " . $sum_erg; } elseif ($this->data->tiebr2 == 25) { $query .= " SET sumTiebr2 = " . $sum_erg; } else { $query .= " SET sumTiebr3 = " . $sum_erg; } $query .= " WHERE turnier = " . $this->turnierid . " AND snr = " . $xvalue->snr; $this->_db->setQuery($query); $this->_db->query(); } else { $query = "UPDATE #__clm_turniere_tlnr"; if ($this->data->tiebr1 == 25) { $query .= " SET sumTiebr1 = NULL"; } elseif ($this->data->tiebr2 == 25) { $query .= " SET sumTiebr2 = NULL"; } else { $query .= " SET sumTiebr3 = NULL"; } $query .= " WHERE turnier = " . $this->turnierid . " AND snr = " . $xvalue->snr; $this->_db->setQuery($query); $this->_db->query(); } } } }
function clm_api_db_tournament_copy($id, $group = true) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table_list = "#__clm_liga"; } else { $table_list = "#__clm_turniere"; } $sql = "SELECT * FROM " . $table_list . " WHERE id=" . $id; $table = clm_core::$db->loadAssocList($sql); $before_ID = $id; $lang = clm_core::$lang->tournament; $table[0]["name"] = $lang->copy2 . " " . $table[0]["name"]; $table[0]["rnd"] = 0; $table[0]["published"] = 0; $out = new clm_class_params($table[0]["params"]); $out->set("dwz_date", ""); $out->set("inofDWZ", ""); $table[0]["params"] = $out->params(); $keyS = ""; $valueS = ""; foreach ($table[0] as $key => $value) { if (is_numeric($key) || $key == "id") { continue; } if ($keyS != "") { $keyS .= ", "; } $keyS .= "`" . $key . "`"; if ($valueS != "") { $valueS .= ", "; } $valueS .= "'" . clm_core::$db->escape($value) . "'"; } $new = "INSERT INTO " . $table_list . " (" . $keyS . ") VALUES (" . $valueS . ")"; clm_core::$db->query($new); $after_ID = clm_core::$db->insert_id(); if (!$group) { return array(true, ""); } if ($after_ID !== false and $after_ID != 0 and $after_ID != $before_ID) { // Runden und Rundentermine für neuen Mannschaftswettbewerb anlegen clm_core::$api->db_tournament_genRounds($after_ID, true); // copy Rundentermine für Mannschaftswettbewerbe $sql = "SELECT * FROM #__clm_runden_termine WHERE liga=" . $id . " ORDER BY nr ASC"; $runden = clm_core::$db->loadAssocList($sql); // alle Runden durchgehen foreach ($runden as $runde) { $new = "UPDATE #__clm_runden_termine " . " SET name = '" . $runde["name"] . "'" . ", datum = '" . $runde["datum"] . "'" . ", startzeit = '" . $runde["startzeit"] . "'" . ", deadlineday = '" . $runde["deadlineday"] . "'" . ", deadlinetime = '" . $runde["deadlinetime"] . "'" . ", published = " . $runde["published"] . ", ordering = " . $runde["ordering"] . ", enddatum = '" . $runde["enddatum"] . "'" . " WHERE liga = " . $after_ID . " AND nr = " . $runde["nr"]; clm_core::$db->query($new); } // Mannschaften anlegen for ($x = 1; $x < 1 + $table[0]['teil']; $x++) { $man_name = $lang->LIGEN_STD_TEAM . " " . $x; if ($x < 10) { $man_nr = $after_ID . '0' . $x; } else { $man_nr = $after_ID . $x; } $newt = " INSERT INTO #__clm_mannschaften " . " (`sid`,`name`,`liga`,`zps`,`liste`,`edit_liste`,`man_nr`,`tln_nr`,`mf`,`published`) " . " VALUES ('" . $table[0]['sid'] . "','{$man_name}','{$after_ID}','1','0','0','{$man_nr}','{$x}','0','0') "; clm_core::$db->query($newt); } } return array(true, "before_ID:" . $before_ID . " after_ID:" . $after_ID); }
public static function name($id, $group = true) { if ($group) { $table = "liga"; } else { $table = "turniere"; } $turParams = new clm_class_params(clm_core::$db->{$table}->get($id)->params); $addCatToName = $turParams->get('addCatToName', 0); if ($addCatToName != 0 && (clm_core::$db->{$table}->get($id)->catidAlltime > 0 || clm_core::$db->{$table}->get($id)->catidEdition > 0)) { return self::addCatToName($addCatToName, clm_core::$db->{$table}->get($id)->name, clm_core::$db->{$table}->get($id)->catidAlltime, clm_core::$db->{$table}->get($id)->catidEdition); } return clm_core::$db->{$table}->get($id)->name; }
function _getTurnierPlayers() { $query = "SELECT rankingPos, snr, name, sum_punkte, sumTiebr1, sumTiebr2, sumTiebr3, twz, '' AS quali" . " FROM `#__clm_turniere_tlnr`" . " WHERE turnier = " . $this->turnierid . $this->_getSpecialRankingWhere(); // Sortierung nach Punkten if ($this->orderby == 'snr') { $orderby = ' ORDER BY snr ASC'; } else { $orderby = ' ORDER BY rankingPos ASC, sum_punkte DESC'; } $orderby .= ', sum_punkte DESC, sumTiebr1 DESC, sumTiebr2 DESC, sumTiebr3 DESC, snr ASC'; $query .= $orderby; $this->_db->setQuery($query); $this->players = $this->_db->loadObjectList(); $this->turnier->playersCount = count($this->players); //RankingPos neu berechnen für Sonderranglisten if ($this->turnier->playersCount != 0) { if ($this->spRang != 0) { $spRankingPos = 0; $rankingPosBefor = 0; foreach ($this->players as $key => $player) { if ($rankingPosBefor != $player->rankingPos) { $spRankingPos++; } $rankingPosBefor = $player->rankingPos; $this->players[$key]->rankingPos = $spRankingPos; } } } if ($this->turnier->playersCount > 0) { if ($this->turnier->typ == 1) { // Ch-System // Spieler: position auf tln_nr aufteilen $this->posToPlayers = array(); foreach ($this->players as $key => $value) { // Position ist $key+1 $this->posToPlayers[$value->snr] = $key + 1; } } elseif ($this->turnier->typ == 2) { // Rundenturnier // Spieler: tln_nr auf Position aufteilen $this->posToPlayers = array(); foreach ($this->players as $key => $value) { // Position ist $key+1 $this->posToPlayers[$key + 1] = $value->snr; } } } // if ($this->orderby == 'pos') { $turParams = new clm_class_params($this->turnier->params); $qualiUp = $turParams->get('qualiUp', 0); $qualiUpPoss = $qualiUp + $turParams->get('qualiUpPoss', 0); $qualiDown = $turParams->get('qualiDown', 0); $qualiDownPoss = $qualiDown + $turParams->get('qualiDownPoss', 0); foreach ($this->players as $key => $value) { if ($qualiUp > 0 and $value->rankingPos <= $qualiUp) { // Aufsteiger $this->players[$key]->quali = '_auf'; } elseif ($qualiUpPoss > 0 and $value->rankingPos <= $qualiUpPoss) { // mgl. Aufsteiger $this->players[$key]->quali = '_auf_evtl'; } elseif ($qualiDown > 0 and $value->rankingPos > $this->turnier->teil - $qualiDown) { // Absteiger $this->players[$key]->quali = '_ab'; } elseif ($qualiDownPoss > 0 and $value->rankingPos > $this->turnier->teil - $qualiDownPoss) { // mgl. Absteiger $this->players[$key]->quali = '_ab_evtl'; } } } }
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008 Thomas Schwietert & Andreas Dorn. All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.fishpoke.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $turnierid = JRequest::getInt('turnier', '1'); $config = clm_core::$db->config(); $turParams = new clm_class_params($this->turnier->params); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'fpdf.php'; class PDF extends FPDF { //Kopfzeile function Header() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_header.php'; } //Fusszeile function Footer() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_footer.php'; } } // Zellenhöhe -> Standard 6
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008-2015 CLM Team All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.chessleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $turnierid = JRequest::getInt('turnier', '1'); $config = clm_core::$db->config(); $turParams = new clm_class_params($this->turnier->params); $heim = array(1 => "W", 0 => "S"); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'fpdf.php'; class PDF extends FPDF { //Kopfzeile function Header() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_header.php'; } //Fusszeile function Footer() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_footer.php'; } }
function clm_api_db_tournament_group() { $table = '#__clm_liga'; $primaryKey = 'id'; $columns = array(array('db' => 'id', 'dt' => 0), array('db' => 'name', 'dt' => 1), array('db' => 'sid', 'dt' => 2), array('db' => 'runden_modus', 'dt' => 3), array('db' => 'runden', 'dt' => 4), array('db' => 'teil', 'dt' => 5), array('db' => 'stamm', 'dt' => 6), array('db' => 'sl', 'dt' => 7), array('db' => 'bemerkungen', 'dt' => 8), array('db' => 'mail', 'dt' => 9), array('db' => 'id', 'dt' => 10), array('db' => 'rnd', 'dt' => 11), array('db' => 'published', 'dt' => 12), array('db' => 'ordering', 'dt' => 13), array('db' => 'id', 'dt' => 14)); // Erzwinge Filter bei unzureichenden Berechtigungen if (clm_core::$access->access('BE_league_general') == 1 && clm_core::$access->access('BE_teamtournament_general') == 0) { if (in_array('liga_mt', $_POST["names"])) { $_POST["values"][array_search("liga_mt", $_POST["names"])] = "0"; } else { $_POST["names"][] = "liga_mt"; $_POST["values"][] = "0"; } } else { if (clm_core::$access->access('BE_league_general') == 0 && clm_core::$access->access('BE_teamtournament_general') == 1) { if (in_array('liga_mt', $_POST["names"])) { $_POST["values"][array_search("liga_mt", $_POST["names"])] = "1"; } else { $_POST["names"][] = "liga_mt"; $_POST["values"][] = "1"; } } } $allowed = array("runden_modus" => "i", "published" => "i", "sid" => "i", "catidAlltime:catidEdition" => "i", "liga_mt" => "i"); $out = clm_class_DataTables::simple($_POST, $table, $primaryKey, $columns, $allowed, clm_core::$db); $lang = clm_core::$lang->tournament_group; $clmAccess = clm_core::$access; for ($i = 0; $i < count($out["data"]); $i++) { if (clm_core::$db->liga->get($out["data"][$i][0])->liga_mt == 0) { $right = "league"; $section = "ligen"; } else { $right = "teamtournament"; $section = "mturniere"; } $out["data"][$i][0] = $i + 1; $out["data"][$i][1] = clm_class_category::name($out["data"][$i][14], true); if (!($out["data"][$i][7] != $clmAccess->getJid() and $clmAccess->access('BE_' . $right . '_edit_detail') !== true or $clmAccess->access('BE_' . $right . '_edit_detail') === false)) { //$out["data"][$i][1] = '<a href="'.clm_core::$load->gen_url(array("section"=>"ligen","task"=>"edit","cid[]"=>$out["data"][$i][14]),array("view")).'">'.$out["data"][$i][1].'</a>'; $out["data"][$i][1] = '<a href="' . clm_core::$load->gen_url(array("section" => $section, "task" => "edit", "cid[]" => $out["data"][$i][14]), array("view")) . '">' . $out["data"][$i][1] . '</a>'; } // Saisonname statt sid Anzeigen $sid = intval($out["data"][$i][2]); $out["data"][$i][2] = clm_core::$db->saison->get($sid)->name; // Modus ID in Name umsetzen $out["data"][$i][3] = clm_core::$load->mode_to_name(intval($out["data"][$i][3]), true); // Runden mit Bestätigung/sl_ok // eingetragene Teilnehmer $query = 'SELECT COUNT(id)' . ' FROM #__clm_runden_termine' . ' WHERE liga = ' . $out["data"][$i][14] . ' AND sl_ok = \'1\''; // Durchläufe Anzeigen if (clm_core::$db->liga->get($out["data"][$i][14])->durchgang > 1) { $out["data"][$i][4] = clm_core::$db->liga->get($out["data"][$i][14])->durchgang . " x " . $out["data"][$i][4]; } if (!($out["data"][$i][7] != $clmAccess->getJid() and $clmAccess->access('BE_' . $right . '_edit_detail') !== true or $clmAccess->access('BE_' . $right . '_edit_detail') === false) and $out["data"][$i][11] == 1) { $out["data"][$i][4] = '<a href="' . clm_core::$load->gen_url(array("section" => "runden", "liga" => $out["data"][$i][14]), array("view")) . '">' . $out["data"][$i][4] . " " . $lang->rounds . '</a>' . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->confirmed . $lang->close; } else { $out["data"][$i][4] = $out["data"][$i][4] . " " . $lang->rounds . "<br/>" . $lang->open . clm_core::$db->count($query) . " " . $lang->confirmed . $lang->close; } // Stammspieler + Ersatzspieler $out["data"][$i][6] = $out["data"][$i][6] . " " . $lang->open . $lang->plus . " " . clm_core::$db->liga->get($out["data"][$i][14])->ersatz . $lang->close; // Turnierleiter $query = 'SELECT name' . ' FROM #__clm_user' . ' WHERE jid = ' . $out["data"][$i][7] . ' AND sid = ' . $sid; $result = clm_core::$db->loadAssocList($query); if (count($result) == 1) { $out["data"][$i][7] = $result[0]["name"]; } else { $out["data"][$i][7] = "-"; } if ($out["data"][$i][8] == "") { $out["data"][$i][8] = $lang->column9_no; } else { $out["data"][$i][8] = '<a href="javascript:void(0);" onclick=\'clm_modal_display("' . htmlspecialchars($out["data"][$i][8], ENT_QUOTES, "UTF-8") . '")\' href="javascript:;" >' . $lang->column9_yes . '</a>'; } // Mail if ($out["data"][$i][9] == 1) { $out["data"][$i][9] = '<button class="clm_table_image " value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',false,true,"mail"]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][9] = '<button class="clm_table_image" value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',true,true,"mail"]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } // DWZ berechnet $params = clm_core::$db->liga->get($out["data"][$i][10])->params; $params = new clm_class_params($params); if ($params->get("inofDWZ", "0") == "1") { $out["data"][$i][10] = '<button class="clm_table_image" value=\'["db_tournament_delDWZ",[' . $out["data"][$i][14] . ',true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][10] = '<button class="clm_table_image" value=\'["db_tournament_genDWZ",[' . $out["data"][$i][14] . ',true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } // Runden if ($out["data"][$i][11] == 1) { $out["data"][$i][11] = '<button class="clm_table_image " value=\'["db_tournament_delRounds",[' . $out["data"][$i][14] . ',true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][11] = '<button class="clm_table_image" value=\'["db_tournament_genRounds",[' . $out["data"][$i][14] . ',true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } // Veröffentlicht if ($out["data"][$i][12] == 1) { $out["data"][$i][12] = '<button class="clm_table_image " value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',false,true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/apply") . '" /></button>'; } else { $out["data"][$i][12] = '<button class="clm_table_image" value=\'["db_tournament_publish",[' . $out["data"][$i][14] . ',true,true]]\'><img width="16" height="16" src="' . clm_core::$load->gen_image_url("table/cancel") . '" /></button>'; } $out["data"][$i][13] = '<input class="clm_table_orderingBox" onkeypress="return clm_isChangeNumber(event);" value="' . $out["data"][$i][13] . '" type="text">'; $out["data"][$i][13] .= '<input class="clm_table_orderingId" value="' . $out["data"][$i][14] . '" type="hidden">'; } return array(true, "m_tableSuccess", $out); }
defined('_JEXEC') or die('Restricted access'); //JHtml::_('behavior.tooltip', '.CLMTooltip', $params); JHtml::_('behavior.tooltip', '.CLMTooltip'); // Stylesheet laden require_once JPATH_COMPONENT . DS . 'includes' . DS . 'css_path.php'; // Konfigurationsparameter auslesen $itemid = JRequest::getVar('Itemid'); // $turnierid = JRequest::getInt('turnier','1'); $config = clm_core::$db->config(); // $pdf_melde = $config->pdf_meldelisten; $fixth_ttln = $config->fixth_ttln; // CLM-Container echo "<div id='clm'><div id='turnier_teilnehmer'>"; // Componentheading $heading = $this->turnier->name . ": " . JText::_('TOURNAMENT_DWZ'); $params = new clm_class_params($this->turnier->params); $inofDWZ = $params->get("inofDWZ", "0"); $dwz_date = $params->get("dwz_date", "0000-00-00"); if ($this->turnier->published == 0) { echo CLMContent::componentheading($heading); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'submenu_t.php'; echo CLMContent::clmWarning(JText::_('TOURNAMENT_NOTPUBLISHED') . "<br/>" . JText::_('TOURNAMENT_PATIENCE')); } elseif (count($this->players) == 0) { echo CLMContent::componentheading($heading); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'submenu_t.php'; echo CLMContent::clmWarning(JText::_('TOURNAMENT_NOPLAYERSREGISTERED')); } elseif ($inofDWZ == 0) { echo CLMContent::componentheading($heading); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'submenu_t.php'; echo CLMContent::clmWarning(JText::_('TOURNAMENT_DWZ_NO')); } else {
function clm_api_db_tournament_genDWZ($id, $group = true) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table_main = "#__clm_liga"; $table_dates = "#__clm_runden_termine"; $table_dates_id = "liga"; $table_list = "#__clm_meldeliste_spieler"; $table_list_id = "lid"; $table_round = "#__clm_rnd_spl"; $table_round_id = "lid"; $playerId = "zps=? AND mgl_nr=? AND lid=?"; $birthAndID = ""; } else { $table_main = "#__clm_turniere"; $table_dates = "#__clm_turniere_rnd_termine"; $table_dates_id = "turnier"; $table_list = "#__clm_turniere_tlnr"; $table_list_id = "turnier"; $table_round = "#__clm_turniere_rnd_spl"; $table_round_id = "turnier"; $playerId = "snr=? AND turnier=?"; $birthAndID = ", birthYear, snr"; } // Alte Ergebnisse entfernen clm_core::$api->db_tournament_delDWZ($id, $group); // Liga Punktebereich auslesen $query = 'SELECT sid' . ' FROM ' . $table_main . ' WHERE id=' . $id; $liga = clm_core::$db->loadObjectList($query); if (count($liga) == 0) { return array(true, "e_calculateDWZNoLiga"); } $liga = $liga[0]; // Vermeintliches Ende bestimmen $query = 'SELECT MAX(datum) as date' . ' FROM ' . $table_dates . ' WHERE ' . $table_dates_id . '=' . $id; $datum = clm_core::$db->loadObjectList($query); if (count($datum) == 0) { return array(true, "e_calculateDWZNoRound"); } $year = substr($datum[0]->date, 0, 4); if ($year == "0000") { $year = date('Y'); // Falls kein Jahr angegeben wurde } else { $year = intval($year); } // Lese alle beteiligten Spieler aus $query = 'SELECT zps, mgl_nr, start_dwz, start_I0, FIDEelo' . $birthAndID . ' FROM ' . $table_list . ' WHERE ' . $table_list_id . '=' . $id; $spieler = clm_core::$db->loadObjectList($query); $dwz = new clm_class_dwz_rechner(); if (count($spieler) == 0) { return array(false, "e_DWZnoPlayer"); } // Spieler zur DWZ Auswertung hinzufügen for ($i = 0; $i < count($spieler); $i++) { // SWT Importe besitzen keinen Index, falls die DWZ größer als 0 ist muss es jedoch einen geben. if ($spieler[$i]->start_I0 == 0 && $spieler[$i]->start_dwz > 0) { $spieler[$i]->start_I0 = 22; } if ($group) { $query = 'SELECT Geburtsjahr' . ' FROM #__clm_dwz_spieler' . ' WHERE sid=' . $liga->sid . ' AND ZPS="' . clm_core::$db->escape($spieler[$i]->zps) . '"' . ' AND Mgl_Nr="' . clm_core::$db->escape($spieler[$i]->mgl_nr) . '"'; $birth = clm_core::$db->loadObjectList($query); if (count($birth) == 0) { // Spieler in der Saison gelöscht? $birth = 0; // Spieler wird als älter als 25 angenommen } else { $birth = $birth[0]->Geburtsjahr; } $dwz->addPlayer($spieler[$i]->zps . ":" . $spieler[$i]->mgl_nr, $year - $birth, $spieler[$i]->start_dwz, $spieler[$i]->start_I0); } else { if (intval($spieler[$i]->birthYear) == 0) { $spieler[$i]->birthYear = $year - 100; } $dwz->addPlayer("p" . $spieler[$i]->snr, $year - $spieler[$i]->birthYear, $spieler[$i]->start_dwz, $spieler[$i]->start_I0, $spieler[$i]->FIDEelo); } // addPlayer($id, $A, $R_o, $Index) } // Wer hat sich diese Struktur ausgedacht? if ($group) { // Lese alle relevanten Partien aus $query = 'SELECT zps, spieler, gzps, gegner, ergebnis' . ' FROM ' . $table_round . ' WHERE ' . $table_round_id . '=' . $id . ' AND heim = 1'; } else { // Lese alle relevanten Partien aus $query = 'SELECT ergebnis, spieler, gegner' . ' FROM ' . $table_round . ' WHERE ' . $table_round_id . '=' . $id . ' AND ergebnis IS NOT NULL' . ' AND heim = 1'; } $partien = clm_core::$db->loadObjectList($query); // Partien zur DWZ Auswertung hinzufügen $someMatch = false; for ($i = 0; $i < count($partien); $i++) { list($punkte, $gpunkte) = clm_core::$load->gen_result($partien[$i]->ergebnis, 0); if ($punkte[0] == -1) { continue; } // addMatch($id1, $id2, $result) if ($group) { $dwz->addMatch($partien[$i]->zps . ":" . $partien[$i]->spieler, $partien[$i]->gzps . ":" . $partien[$i]->gegner, $punkte, $gpunkte); } else { $dwz->addMatch("p" . $partien[$i]->spieler, "p" . $partien[$i]->gegner, $punkte, $gpunkte); } $someMatch = true; } $result = $dwz->getAllPlayerObject(); if (!$someMatch) { return array(false, "e_DWZnoMatch"); } $sql = "UPDATE " . $table_list . " SET DWZ=?, I0=?, Punkte=?, Partien=?, We=?, Leistung=?, EFaktor=?, Niveau=? WHERE " . $playerId; $stmt = clm_core::$db->prepare($sql); // Ergebnis Schreiben foreach ($result as $id2 => $value) { // Korrektur Leistung: Anzeige bei weniger als 5 Spielen oder nur Siegen/Niederlagen nicht gewollt if ($value->n < 5 || $value->W == 0 || $value->W == $value->n) { $value->R_p = 0; } if ($group) { $id2 = explode(":", $id2); $stmt->bind_param('iididiiisii', $value->R_n, $value->R_nI, $value->W, $value->n, $value->W_e, $value->R_p, $value->E, $value->R_c, $id2[0], $id2[1], $id); } else { $id2 = explode("p", $id2); $stmt->bind_param('iididiiiii', $value->R_n, $value->R_nI, $value->W, $value->n, $value->W_e, $value->R_p, $value->E, $value->R_c, $id2[1], $id); } $stmt->execute(); } $stmt->close(); if ($group) { $table = clm_core::$db->liga->get($id); } else { $table = clm_core::$db->turniere->get($id); } if (!$table->isNew()) { $params = new clm_class_params($table->params); $params->set("inofDWZ", "1"); $table->params = $params->params(); } return array(true, "m_calculateDWZSuccess"); }
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.chessleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); JHTML::_('behavior.modal'); // Stylesheet laden require_once JPATH_COMPONENT . DS . 'includes' . DS . 'css_path.php'; // Konfigurationsparameter auslesen $itemid = JRequest::getVar('Itemid'); $config = clm_core::$db->config(); // $pdf_melde = $config->pdf_meldelisten; $turParams = new clm_class_params($this->turnier->params); // CLM-Container echo '<div ><div id="turnier_player">'; // Componentheading $heading = $this->turnier->name . ": " . JText::_('TOURNAMENT_PARTICIPANTINFO'); if ($this->turnier->published == 0) { echo CLMContent::componentheading($heading); echo CLMContent::clmWarning(JText::_('TOURNAMENT_NOTPUBLISHED') . "<br/>" . JText::_('TOURNAMENT_PATIENCE')); } else { echo CLMContent::componentheading($heading); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'submenu_t.php'; ?> <div class="tp_col_playerContent"> <?php if ($this->playerPhoto != '') {
// Fortschritt/Paarungstafel if ($param['linkrankingscore'] == 1 and $value->typ != 3) { if (strlen($value->stringRankingScore) > 0) { $text = $value->stringRankingScore; } elseif ($value->typ == 1) { $text = JText::_('RANKING'); } elseif ($value->typ == 2) { $text = JText::_('SCOREBOARD'); } echo modCLM_TurnierHelper::makeLink('turnier_rangliste', $value->id, array($str_rsorderby), $text, $view, $turnierid, $param['itemid']); } // Inof. DWZ if ($param['linkdwz'] == 1) { $table = clm_core::$db->turniere->get($turnierid); if (!$table->isNew()) { $parameter = new clm_class_params($table->params); if ($parameter->get("inofDWZ", "0") == 1) { echo modCLM_TurnierHelper::makeLink('turnier_dwz', $value->id, array(), JText::_('DWZ'), $view, $turnierid, $param['itemid']); } } } // Ausschreibung if ($param['linkinvitation'] == 1 and $value->invitationLength > 0) { echo modCLM_TurnierHelper::makeLink('turnier_invitation', $value->id, array($str_rsorderby), JText::_('INVITATION'), $view, $turnierid, $param['itemid']); } // Bemerkungen if ($param['shownotes'] == 1 and strlen($value->bemerkungen) > 0) { echo '<li><span>' . nl2br(JFilterOutput::cleantext($value->bemerkungen)) . '</span></li>'; } echo '</ul>'; } else {
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008-2016 CLM Team. All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.chessleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $turParams = new clm_class_params($this->turnier->params); $pgnInput = $turParams->get('pgnInput', 1); ?> <style type="text/css"> #clm .clm input, #clm .clm textarea, #clm .clm .uneditable-input { width: auto; } </style> <script language="javascript" type="text/javascript"> function openPgnRow(id) { document.getElementById('pgnSwitch' + id).innerHTML = ''; document.getElementById('pgnHead' + id).innerHTML = 'PGN:'; document.getElementById('pgnTextarea' + id).innerHTML = '<textarea name="pgn[' + id + ']" id="pgnformt' + id + '" cols="75" rows="10"></textarea>';
function clm_api_db_tournament_updateDWZ($id, $group = true) { $id = clm_core::$load->make_valid($id, 0, -1); if ($group) { $table_main = "#__clm_liga"; $table_list = "#__clm_meldeliste_spieler"; $table_list_id = "lid"; $elo = ", FIDEelo=?"; } else { $table_main = "#__clm_turniere"; $table_list = "#__clm_turniere_tlnr"; $table_list_id = "turnier"; $elo = ", FIDEcco=?, FIDEelo=?, FIDEid=?, twz=?"; } // Datum der zu übernehmenden DWZ Daten anhand der Saison festsetzen, eventuell useAsTWZ auslesen $lastDWZUpdate = clm_core::$db->saison->get(clm_core::$access->getSeason())->datum; if ($group) { $table = clm_core::$db->liga->get($id); } else { $table = clm_core::$db->turniere->get($id); } $params = new clm_class_params($table->params); $params->set("dwz_date", $lastDWZUpdate); $table->params = $params->params(); if (!$group) { $useAsTWZ = $params->get("useAsTWZ", "0"); } // Spieler DWZ Aktualisieren $query = 'SELECT a.zps as zps, a.mgl_nr as mgl_nr, b.DWZ as dwz, b.FIDE_Elo as FIDEelo, b.FIDE_ID as FIDEid, b.FIDE_Land as FIDEcco, b.DWZ_Index as dwz_index FROM ' . $table_list . ' as a' . ' INNER JOIN #__clm_dwz_spieler as b' . ' ON a.sid=b.sid AND a.zps=b.zps AND a.mgl_nr = b.Mgl_Nr ' . ' WHERE a.' . $table_list_id . ' = ' . $id; $players = clm_core::$db->loadObjectList($query); $sql = "UPDATE " . $table_list . " SET start_dwz=?, start_I0=?" . $elo . " WHERE " . $table_list_id . "=? AND zps=? AND mgl_nr=?"; $stmt = clm_core::$db->prepare($sql); // Ergebnis Schreiben foreach ($players as $value) { if ($group) { $stmt->bind_param('iiiisi', $value->dwz, $value->dwz_index, $value->FIDEelo, $id, $value->zps, $value->mgl_nr); } else { // TWZ Aktualisieren $twz = clm_core::$load->gen_twz($useAsTWZ, $value->dwz, $value->FIDEelo); $stmt->bind_param('iisiiiisi', $value->dwz, $value->dwz_index, $value->FIDEcco, $value->FIDEelo, $value->FIDEid, $twz, $id, $value->zps, $value->mgl_nr); } $stmt->execute(); } $stmt->close(); // Berechne oder Lösche die inoff. DWZ nach dieser Änderung if ($group) { $params = clm_core::$db->liga->get($id)->params; } else { $params = clm_core::$db->turniere->get($id)->params; } $turParams = new clm_class_params($params); $autoDWZ = $turParams->get("autoDWZ", 0); if ($autoDWZ == 0) { clm_core::$api->direct("db_tournament_genDWZ", array($id, $group)); } else { if ($autoDWZ == 1) { clm_core::$api->direct("db_tournament_delDWZ", array($id, $group)); } } return array(true, "m_updateDWZSuccess"); }
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008-2015 CLM Team All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.chessleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $clmAccess = clm_core::$access; $turParams = new clm_class_params($this->turnier->params); ?> <form action="index.php" method="post" name="adminForm" id="adminForm"> <table> <tr> <td align="left" width="100%"> <?php echo JText::_('FILTER'); ?> : <input type="text" name="search" id="search" value="<?php echo $this->form['search']; ?> " class="text_area" onchange="document.adminForm.submit();" /> <button onclick="this.form.submit();"><?php echo JText::_('GO');
<?php /** * @ Chess League Manager (CLM) Component * @Copyright (C) 2008-2015 CLM Team All rights reserved * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link http://www.cheesleaguemanager.de * @author Thomas Schwietert * @email fishpoke@fishpoke.de * @author Andreas Dorn * @email webmaster@sbbl.org */ defined('_JEXEC') or die('Restricted access'); $turnierid = JRequest::getInt('turnier', '1'); $config = clm_core::$db->config(); $turParams = new clm_class_params($this->turnier->params); require_once JPATH_COMPONENT . DS . 'includes' . DS . 'fpdf.php'; class PDF extends FPDF { //Kopfzeile function Header() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_header.php'; } //Fusszeile function Footer() { require JPATH_COMPONENT . DS . 'includes' . DS . 'pdf_footer.php'; } } // Zellenhöhe -> Standard 6