function getTurnier() { function check_date($date, $format, $sep) { $pos1 = strpos($format, 'd'); $pos2 = strpos($format, 'm'); $pos3 = strpos($format, 'Y'); $check = explode($sep, $date); return checkdate($check[$pos2], $check[$pos1], $check[$pos3]); } if (empty($this->_turnier)) { //Name und Verzeichnis der SWT-Datei $filename = JRequest::getVar('swt', '', 'post', 'string'); $path = JPATH_COMPONENT . DIRECTORY_SEPARATOR . "swt" . DIRECTORY_SEPARATOR; $swt = $path . $filename; //JObject wird erzeugt und mit Turnierdaten erweitert $this->_turnier = new JObject(); // //Turnierdaten, die nicht aus der SWT-Datei importiert werden // //Standartwerte $this->_turnier->set('tid', 0); //$this->_turnier->set('sid' , $this->_getAktuelleSaison()); $this->_turnier->set('sid', clm_core::$access->getSeason()); $this->_turnier->set('dateStart', NULL); $this->_turnier->set('dateEnd', NULL); $this->_turnier->set('catidAlltime', 0); $this->_turnier->set('catidEdition', 0); $this->_turnier->set('tl', NULL); $this->_turnier->set('bezirk', NULL); $this->_turnier->set('bezirkTur', 1); $this->_turnier->set('vereinZPS', 0); $this->_turnier->set('published', 1); $this->_turnier->set('bem_int', ''); $this->_turnier->set('bemerkungen', ''); $this->_turnier->set('started', 0); $this->_turnier->set('finished', 0); $this->_turnier->set('invitationText', ''); $this->_turnier->set('ordering', 0); $this->_turnier->set('params', ''); //Name if (($name = CLMSWT::readName($swt, 245, 60)) != '') { $this->_turnier->set('name', $name); } else { $this->_turnier->set('name', $filename); } //Mit Daten aus Datenbank �berschreiben, falls ein Turnier geupdated wird if (JRequest::getInt('update') == 1) { $turnierFromDatabase = $this->_getTurnierFromDatabase(); } // // Daten aus der SWT-Datei // //Modus $this->_turnier->set('modus', $this->_calculateCLMModus(CLMSWT::readInt($swt, 596, 1))); //rnd if (CLMSWT::readInt($swt, 3, 2) == 0) { $this->_turnier->set('rnd', 0); } else { $this->_turnier->set('rnd', 1); } //Anz. Runden und Anz. Durchg�nge $this->_turnier->set('runden', CLMSWT::readInt($swt, 1, 2)); $this->_turnier->set('dg', CLMSWT::readInt($swt, 599, 1)); //Anz. der Teilnehmer //$this->_turnier->set('teil' , CLMSWT::readInt($swt,7,2)); $this->_turnier->set('teil', $this->_getAnzTeilnehmer()); //Turnierdatum if (($tdatum = CLMSWT::readName($swt, 1055, 20)) != '') { $hdatum = substr($tdatum, 6, 4) . '-' . substr($tdatum, 3, 2) . '-' . substr($tdatum, 0, 2); if (check_date($hdatum, "Ymd", "-")) { $this->_turnier->set('dateStart', $hdatum); } } if (($tdatum = CLMSWT::readName($swt, 1076, 20)) != '') { $hdatum = substr($tdatum, 6, 4) . '-' . substr($tdatum, 3, 2) . '-' . substr($tdatum, 0, 2); if (check_date($hdatum, "Ymd", "-")) { $this->_turnier->set('dateEnd', $hdatum); } } //Feinwertung $anzStreichwertungen = CLMSWT::readInt($swt, 9, 1); if ($this->_turnier->modus == 2) { //Vollrundig $anzStreichwertungen = 0; } if ($this->_turnier->modus == 1) { $feinwertung1 = CLMSWT::readInt($swt, 621, 1); $feinwertung2 = CLMSWT::readInt($swt, 572, 1); } elseif ($this->_turnier->modus == 2) { $feinwertung1 = CLMSWT::readInt($swt, 622, 1); $feinwertung2 = CLMSWT::readInt($swt, 573, 1); } else { $this->_turnier->set('tiebr1', 0); $this->_turnier->set('tiebr2', 0); $this->_turnier->set('tiebr3', 0); } if ($this->_turnier->modus == 1 or $this->_turnier->modus == 2) { if ($feinwertung1 == 3 and $anzStreichwertungen != 1) { //Buchholz $this->_turnier->set('tiebr1', 1); } elseif ($feinwertung1 == 3 and $anzStreichwertungen == 1) { //Buchholz mit 1 Streichergebnis $this->_turnier->set('tiebr1', 11); } elseif ($feinwertung1 == 7 and $anzStreichwertungen != 1) { //Buchholzsumme $this->_turnier->set('tiebr1', 2); } elseif ($feinwertung1 == 7 and $anzStreichwertungen == 1) { //Buchholzsumme mit 1 Streichergebnis $this->_turnier->set('tiebr1', 12); } elseif ($feinwertung1 == 4) { //Summenwertung $this->_turnier->set('tiebr1', 7); } elseif ($feinwertung1 == 5 and $anzStreichwertungen != 1) { //Sonneborn-Berger $this->_turnier->set('tiebr1', 3); } elseif ($feinwertung1 == 5 and $anzStreichwertungen == 1) { //Sonneborn-Berger mit 1 Streichergebnis $this->_turnier->set('tiebr1', 13); } elseif ($feinwertung1 == 6 and $anzStreichwertungen == 0) { //mittlere Buchholz $this->_turnier->set('tiebr1', 5); } elseif ($feinwertung1 == 8) { //Elo-Schnitt $this->_turnier->set('tiebr1', 6); } elseif ($feinwertung1 == 14) { //Anz. der Siege $this->_turnier->set('tiebr1', 4); } elseif ($feinwertung1 == 15) { //Direkter Vergleich $this->_turnier->set('tiebr1', 25); } else { $this->_turnier->set('tiebr1', 0); } if ($feinwertung2 == 3 and $anzStreichwertungen != 1) { //Buchholz $this->_turnier->set('tiebr2', 1); } elseif ($feinwertung2 == 3 and $anzStreichwertungen == 1) { //Buchholz mit 1 Streichergebnis $this->_turnier->set('tiebr2', 11); } elseif ($feinwertung2 == 7 and $anzStreichwertungen != 1) { //Buchholzsumme $this->_turnier->set('tiebr2', 2); } elseif ($feinwertung2 == 7 and $anzStreichwertungen == 1) { //Buchholzsumme mit 1 Streichergebnis $this->_turnier->set('tiebr2', 12); } elseif ($feinwertung2 == 4) { //Summenwertung $this->_turnier->set('tiebr2', 7); } elseif ($feinwertung2 == 5 and $anzStreichwertungen != 1) { //Sonneborn-Berger $this->_turnier->set('tiebr2', 3); } elseif ($feinwertung2 == 5 and $anzStreichwertungen == 1) { //Sonneborn-Berger mit 1 Streichergebnis $this->_turnier->set('tiebr2', 13); } elseif ($feinwertung1 == 6 and $anzStreichwertungen == 0) { //mittlere Buchholz $this->_turnier->set('tiebr2', 5); } elseif ($feinwertung2 == 8) { //Elo-Schnitt $this->_turnier->set('tiebr2', 6); } elseif ($feinwertung2 == 14) { //Anz. der Siege $this->_turnier->set('tiebr2', 4); } elseif ($feinwertung2 == 15) { //Direkter Vergleich $this->_turnier->set('tiebr2', 25); } else { $this->_turnier->set('tiebr2', 0); } if (CLMSWT::readBool($swt, 593) and $this->_turnier->modus != 2) { $this->_turnier->set('tiebr3', 4); } else { $this->_turnier->set('tiebr3', 0); } } //Ranglistenkorrektur $this->_turnier->set('optionTiebreakersFideCorrect', CLMSWT::readBool($swt, 675)); //TWZ-Einstellung $twz = CLMSWT::readInt($swt, 582, 1); if ($twz == 0) { $this->_turnier->set('useAsTWZ', 2); } elseif ($twz == 1) { $this->_turnier->set('useAsTWZ', 1); } elseif ($twz == 2) { $this->_turnier->set('useAsTWZ', 0); } /*Parameter $turParams->get('optionTiebreakersFideCorrect',0); $turParams->get('useAsTWZ', 0); $turParams->get('qualiUp', 0); $turParams->get('qualiUpPoss', 0); $turParams->get('qualiDown', 0); $turParams->get('qualiDownPoss', 0); $turParams->get('addCatToName', 0); $turParams->get('displayRoundDate', 1); $turParams->get('displayPlayerSnr', 1); $turParams->get('displayPlayerTitle', 1); $turParams->get('displayPlayerClub', 1); $turParams->get('displayPlayerRating', 0); $turParams->get('displayPlayerElo', 0); $turParams->get('displayPlayerFideLink', 0); $turParams->get('displayPlayerFederation', 0); $turParams->get('displayTlOK', $this->params['tourn_showtlok']); $turParams->get('pgnInput', 1); $turParams->get('pgnPublic', 1); $turParams->get('playerViewDisplaySex', 1); $turParams->get('playerViewDisplayBirthYear', 1); $turParams->get('joomGalleryDisplayPlayerPhotos', 0); $turParams->get('joomGalleryCatId', ''); $turParams->get('joomGalleryPhotosWidth', ''); */ } return $this->_turnier; }
function getTurnier() { /* function check_date($date,$format,$sep) { $pos1 = strpos($format, 'd'); $pos2 = strpos($format, 'm'); $pos3 = strpos($format, 'Y'); $check = explode($sep,$date); return checkdate($check[$pos2],$check[$pos1],$check[$pos3]); } */ function check_date($date, $format, $sep) { $pos1 = strpos($format, 'd'); // 0 $pos2 = strpos($format, 'm'); // 1 $pos3 = strpos($format, 'Y'); // 2 $check = explode($sep, $date); if (count($check) != 3) { return false; } if (!is_numeric($check[0]) or !is_numeric($check[1]) or !is_numeric($check[2])) { return false; } $check[$pos1] = str_pad($check[$pos1], 2, "0", STR_PAD_LEFT); $check[$pos2] = str_pad($check[$pos2], 2, "0", STR_PAD_LEFT); $check[$pos3] = str_pad($check[$pos3], 4, "20", STR_PAD_LEFT); if (!checkdate($check[$pos2], $check[$pos1], $check[$pos3])) { return false; } return $check[$pos3] . "-" . $check[$pos2] . "-" . $check[$pos1]; } if (empty($this->_turnier)) { //Name und Verzeichnis der SWT-Datei $filename = JRequest::getVar('swt', '', 'post', 'string'); $path = JPATH_COMPONENT . DIRECTORY_SEPARATOR . "swt" . DIRECTORY_SEPARATOR; $swt = $path . $filename; //JObject wird erzeugt und mit Turnierdaten erweitert $this->_turnier = new JObject(); // //Turnierdaten, die nicht aus der SWT-Datei importiert werden // //Standartwerte $this->_turnier->set('tid', 0); //$this->_turnier->set('sid' , $this->_getAktuelleSaison()); $this->_turnier->set('sid', clm_core::$access->getSeason()); $this->_turnier->set('dateStart', NULL); $this->_turnier->set('dateEnd', NULL); $this->_turnier->set('catidAlltime', 0); $this->_turnier->set('catidEdition', 0); $this->_turnier->set('tl', NULL); $this->_turnier->set('bezirk', NULL); $this->_turnier->set('bezirkTur', 1); $this->_turnier->set('vereinZPS', 0); $this->_turnier->set('published', 1); $this->_turnier->set('bem_int', 'SWT-Importfile:' . $filename . ';'); $this->_turnier->set('bemerkungen', ''); $this->_turnier->set('started', 0); $this->_turnier->set('finished', 0); $this->_turnier->set('invitationText', ''); $this->_turnier->set('ordering', 0); $this->_turnier->set('params', ''); $this->_turnier->set('sieg', '1'); $this->_turnier->set('siegs', '1'); $this->_turnier->set('remis', '0.5'); $this->_turnier->set('remiss', '0.5'); $this->_turnier->set('nieder', '0'); $this->_turnier->set('niederk', '0'); //Name if (($name = CLMSWT::readName($swt, 245, 60)) != '') { $this->_turnier->set('name', $name); } else { $this->_turnier->set('name', $filename); } //Mit Daten aus Datenbank �berschreiben, falls ein Turnier geupdated wird if (JRequest::getInt('update') == 1) { $turnierFromDatabase = $this->_getTurnierFromDatabase(); } // // Daten aus der SWT-Datei // //Modus $this->_turnier->set('modus', $this->_calculateCLMModus(CLMSWT::readInt($swt, 596, 1))); //rnd if (CLMSWT::readInt($swt, 3, 2) == 0) { $this->_turnier->set('rnd', 0); } else { $this->_turnier->set('rnd', 1); } //Anz. Runden und Anz. Durchg�nge $this->_turnier->set('runden', CLMSWT::readInt($swt, 1, 2)); $this->_turnier->set('dg', CLMSWT::readInt($swt, 599, 1)); //Anz. der Teilnehmer //$this->_turnier->set('teil' , CLMSWT::readInt($swt,7,2)); $this->_turnier->set('teil', $this->_getAnzTeilnehmer()); //Turnierdatum if (($tdatum = CLMSWT::readName($swt, 1055, 20)) != '') { // $hdatum = substr($tdatum,6,4).'-'.substr($tdatum,3,2).'-'.substr($tdatum,0,2); // if(check_date($hdatum,"Ymd","-")) // $this->_turnier->set('dateStart', $hdatum); if (check_date($tdatum, "dmY", ".") != false) { $this->_turnier->set('dateStart', check_date($tdatum, "dmY", ".")); } else { $this->_turnier->set('dateStart', ""); } } if (($tdatum = CLMSWT::readName($swt, 1076, 20)) != '') { // $hdatum = substr($tdatum,6,4).'-'.substr($tdatum,3,2).'-'.substr($tdatum,0,2); // if(check_date($hdatum,"Ymd","-")) // $this->_turnier->set('dateEnd', $hdatum); if (check_date($tdatum, "dmY", ".") != false) { $this->_turnier->set('dateEnd', check_date($tdatum, "dmY", ".")); } else { $this->_turnier->set('dateEnd', ""); } } //Feinwertung $anzStreichwertungen = CLMSWT::readInt($swt, 9, 1); if ($this->_turnier->modus == 2) { //Vollrundig $anzStreichwertungen = 0; } if ($this->_turnier->modus == 1) { $feinwertung1 = CLMSWT::readInt($swt, 621, 1); $feinwertung2 = CLMSWT::readInt($swt, 572, 1); } elseif ($this->_turnier->modus == 2) { $feinwertung1 = CLMSWT::readInt($swt, 622, 1); $feinwertung2 = CLMSWT::readInt($swt, 573, 1); } else { $this->_turnier->set('tiebr1', 0); $this->_turnier->set('tiebr2', 0); $this->_turnier->set('tiebr3', 0); } if ($this->_turnier->modus == 1 or $this->_turnier->modus == 2) { if ($feinwertung1 == 3 and $anzStreichwertungen != 1) { //Buchholz $this->_turnier->set('tiebr1', 1); } elseif ($feinwertung1 == 3 and $anzStreichwertungen == 1) { //Buchholz mit 1 Streichergebnis $this->_turnier->set('tiebr1', 11); } elseif ($feinwertung1 == 7 and $anzStreichwertungen != 1) { //Buchholzsumme $this->_turnier->set('tiebr1', 2); } elseif ($feinwertung1 == 7 and $anzStreichwertungen == 1) { //Buchholzsumme mit 1 Streichergebnis $this->_turnier->set('tiebr1', 12); } elseif ($feinwertung1 == 4) { //Summenwertung $this->_turnier->set('tiebr1', 7); } elseif ($feinwertung1 == 5 and $anzStreichwertungen != 1) { //Sonneborn-Berger $this->_turnier->set('tiebr1', 3); } elseif ($feinwertung1 == 5 and $anzStreichwertungen == 1) { //Sonneborn-Berger mit 1 Streichergebnis $this->_turnier->set('tiebr1', 13); } elseif ($feinwertung1 == 6 and $anzStreichwertungen == 0) { //mittlere Buchholz $this->_turnier->set('tiebr1', 5); } elseif ($feinwertung1 == 8) { //Elo-Schnitt $this->_turnier->set('tiebr1', 6); } elseif ($feinwertung1 == 14) { //Anz. der Siege $this->_turnier->set('tiebr1', 4); } elseif ($feinwertung1 == 15) { //Direkter Vergleich $this->_turnier->set('tiebr1', 25); } else { $this->_turnier->set('tiebr1', 0); } if ($feinwertung2 == 3 and $anzStreichwertungen != 1) { //Buchholz $this->_turnier->set('tiebr2', 1); } elseif ($feinwertung2 == 3 and $anzStreichwertungen == 1) { //Buchholz mit 1 Streichergebnis $this->_turnier->set('tiebr2', 11); } elseif ($feinwertung2 == 7 and $anzStreichwertungen != 1) { //Buchholzsumme $this->_turnier->set('tiebr2', 2); } elseif ($feinwertung2 == 7 and $anzStreichwertungen == 1) { //Buchholzsumme mit 1 Streichergebnis $this->_turnier->set('tiebr2', 12); } elseif ($feinwertung2 == 4) { //Summenwertung $this->_turnier->set('tiebr2', 7); } elseif ($feinwertung2 == 5 and $anzStreichwertungen != 1) { //Sonneborn-Berger $this->_turnier->set('tiebr2', 3); } elseif ($feinwertung2 == 5 and $anzStreichwertungen == 1) { //Sonneborn-Berger mit 1 Streichergebnis $this->_turnier->set('tiebr2', 13); } elseif ($feinwertung1 == 6 and $anzStreichwertungen == 0) { //mittlere Buchholz $this->_turnier->set('tiebr2', 5); } elseif ($feinwertung2 == 8) { //Elo-Schnitt $this->_turnier->set('tiebr2', 6); } elseif ($feinwertung2 == 14) { //Anz. der Siege $this->_turnier->set('tiebr2', 4); } elseif ($feinwertung2 == 15) { //Direkter Vergleich $this->_turnier->set('tiebr2', 25); } else { $this->_turnier->set('tiebr2', 0); } if (CLMSWT::readBool($swt, 593) and $this->_turnier->modus != 2) { $this->_turnier->set('tiebr3', 4); } else { $this->_turnier->set('tiebr3', 0); } } //Ranglistenkorrektur $this->_turnier->set('optionTiebreakersFideCorrect', CLMSWT::readBool($swt, 675)); //Partiewertung $pwertung = CLMSWT::readInt($swt, 582, 1); if ($pwertung > 3) { $pwertung = 0; } if ($pwertung == 0) { $this->_turnier->set('sieg', 1); $this->_turnier->set('siegs', 1); $this->_turnier->set('remis', 0.5); $this->_turnier->set('remiss', 0.5); $this->_turnier->set('nieder', 0); $this->_turnier->set('niederk', 0); } elseif ($pwertung == 1) { $this->_turnier->set('sieg', 3); $this->_turnier->set('siegs', 3); $this->_turnier->set('remis', 1); $this->_turnier->set('remiss', 1); $this->_turnier->set('nieder', 0); $this->_turnier->set('niederk', 0); } elseif ($pwertung == 2) { $this->_turnier->set('sieg', 3); $this->_turnier->set('siegs', 3); $this->_turnier->set('remis', 1); $this->_turnier->set('remiss', 1.5); $this->_turnier->set('nieder', 0); $this->_turnier->set('niederk', 0); } else { $this->_turnier->set('sieg', CLMSWT::readInt($swt, 5494, 1)); $this->_turnier->set('siegs', CLMSWT::readInt($swt, 5496, 1)); $this->_turnier->set('remis', CLMSWT::readInt($swt, 5498, 1)); $this->_turnier->set('remiss', CLMSWT::readInt($swt, 5500, 1)); $this->_turnier->set('nieder', CLMSWT::readInt($swt, 5502, 1)); $this->_turnier->set('niederk', CLMSWT::readInt($swt, 5506, 1)); } //TWZ-Einstellung $twz = CLMSWT::readInt($swt, 582, 1); if ($twz == 0) { $this->_turnier->set('useAsTWZ', 2); } elseif ($twz == 1) { $this->_turnier->set('useAsTWZ', 1); } elseif ($twz == 2) { $this->_turnier->set('useAsTWZ', 0); } } return $this->_turnier; }
function getTeilnehmer() { jimport('joomla.filesystem.file'); //Name und Verzeichnis der SWT-Datei $filename = JRequest::getVar('swt', '', 'post', 'string'); $path = JPATH_COMPONENT . DIRECTORY_SEPARATOR . "swt" . DIRECTORY_SEPARATOR; $swt = $path . $filename; //Array f�r JObjects erzeugen; $this->_teilnehmer = array(); //Einstellungen zur Berechnung des offset auslesen $anz_teilnehmer = CLMSWT::readInt($swt, 7, 2); $anz_runden = CLMSWT::readInt($swt, 1, 2); $anz_durchgaenge = CLMSWT::readInt($swt, 599, 1); $aktuelle_runde = CLMSWT::readInt($swt, 3, 2); $aktueller_durchgang = CLMSWT::readInt($swt, 598, 1); $ausgeloste_runden = CLMSWT::readInt($swt, 5, 2); $modus = $this->_calculateCLMModus(CLMSWT::readInt($swt, 596, 1)); //offset f�r Teilnehmerdaten berechnen if ($aktuelle_runde != 0) { //Turnier ist bereits angefangen if ($modus == 2) { //Vollrundig $offset = 13384 + $anz_teilnehmer * $anz_runden * $anz_durchgaenge * 19; } else { $offset = 13384 + $anz_teilnehmer * $anz_runden * 19; } } else { //Turnier ist noch nicht angefangen $offset = 13384; } //TWZ-Bestimmen Parameter lesen $useAsTWZ = CLMSWT::getFormValue('params', 0, 'int', 'useAsTWZ'); //Spielerdaten werden aus SWT-Datei gelesen und in einem Array von JObjects gespeichert $i = 1; while ($i <= $anz_teilnehmer) { $teilnehmer = new JObject(); if (CLMSWT::readInt($swt, $offset + 189, 1) == 102) { $teilnehmer->set('name', 'spielfrei'); } else { $teilnehmer->set('name', CLMSWT::readName($swt, $offset, 32)); $teilnehmer->set('verein', CLMSWT::readName($swt, $offset + 33, 32)); $teilnehmer->set('title', CLMSWT::readName($swt, $offset + 66, 3)); $teilnehmer->set('FIDEelo', CLMSWT::readName($swt, $offset + 70, 4)); $teilnehmer->set('start_dwz', CLMSWT::readName($swt, $offset + 75, 4)); $teilnehmer->set('FIDEcco', CLMSWT::readName($swt, $offset + 105, 3)); $teilnehmer->set('NATcco', CLMSWT::readName($swt, $offset + 109, 3)); $teilnehmer->set('birthYear', CLMSWT::readName($swt, $offset + 128, 4)); $teilnehmer->set('zps', CLMSWT::readName($swt, $offset + 153, 5)); $teilnehmer->set('mgl_nr', CLMSWT::readName($swt, $offset + 159, 4)); $teilnehmer->set('geschlecht', CLMSWT::readName($swt, $offset + 184, 1)); $teilnehmer->set('tlnrStatus', CLMSWT::readName($swt, $offset + 184, 1) == "*" ? "0" : "1"); $teilnehmer->set('FIDEid', CLMSWT::readName($swt, $offset + 324, 12)); //TWZ-Bestimmen if ($useAsTWZ == 0) { if ($teilnehmer->FIDEelo >= $teilnehmer->start_dwz) { $teilnehmer->set('twz', $teilnehmer->FIDEelo); } else { $teilnehmer->set('twz', $teilnehmer->start_dwz); } } elseif ($useAsTWZ == 1) { if ($teilnehmer->start_dwz > 0) { $teilnehmer->set('twz', $teilnehmer->start_dwz); } else { $teilnehmer->set('twz', $teilnehmer->FIDEelo); } } elseif ($useAsTWZ == 2) { if ($teilnehmer->FIDEelo > 0) { $teilnehmer->set('twz', $teilnehmer->FIDEelo); } else { $teilnehmer->set('twz', $teilnehmer->start_dwz); } } // Geschlecht korrigieren // Keine Angabe = Männlich if ($teilnehmer->geschlecht == " ") { $teilnehmer->set('geschlecht', "M", 1); } } $this->_teilnehmer[$i] = $teilnehmer; //Offset und index f�r n�chsten Teilnehmer erh�hen $offset += 655; $i++; } return $this->_teilnehmer; }