/** * Action handler for the INSERT / UPDATE of a membership record * returns err:string or success:messages ... * * @param int $membership_id * @param int $player_id * @param int $verein_id * @param int $mtype_id * @param string $v_passnr * @param date $v_mstart * @param date $v_mend */ function dso_insupdmembership($membership_id, $player_id, $verein_id, $mtype_id, $v_passnr, $v_mstart, $v_mend) { global $dbi, $usertoken; // CHECK ACCESS 2 $qV = sql_query('SELECT * from tverein WHERE vid=' . $verein_id, $dbi); $aV = sql_fetch_array($qV, $dbi); if ($usertoken['registermap'][$aV['verband_id']] < 3) { return 'E50:P2:RightsMissing:' . $usertoken['registermap'][$aV['verband_id']]; } // cre_INFO, date defaults ... $upd_date = ls_getdate(); // check Values if (!$verein_id > 0) { die_red('Verein not set'); } if (!$mtype_id > 0) { die_red('Type not set'); } if (!$player_id > 0) { die_red('Player not set'); } if (strlen($v_passnr) < 3) { die_red('Pass Number not set'); } if (!check_date($v_mstart)) { $v_mstart = substr($upd_date, 0, 4) . '-01-01'; } if (!check_date($v_mend)) { $v_mend = substr($upd_date, 0, 4) . '-12-31'; } /* CODE from the workflow ORM stuff ... $p=new cPlayer; $p->setDB($dbi); $p->getbyID($player_id); $p->saveMembershipVerein($v_verein,$v_mtype,$v_passnr,$v_mstart,$v_mend); if (strlen($p->pError)>1){debug($p->pError);return 0;}else{return 1;} */ if ($membership_id > 0) { $qry = "UPDATE tmembership SET mtype={$mtype_id},mvereinid={$verein_id},mpassnr='{$v_passnr}', mstart='{$v_mstart}',mend='{$v_mend}'," . "mcre_user='******'uname'] . "',mcre_date='{$upd_date}' where mpid={$player_id} and mid={$membership_id} limit 1"; } else { $qry = 'INSERT into tmembership(mid,mpid,mtype,mpassnr,mstart,mend,mvereinid,mcre_user,mcre_date,mstatus,mflag)' . " VALUES(0,{$player_id},{$mtype_id},'{$v_passnr}','{$v_mstart}','{$v_mend}',{$verein_id},'" . $usertoken['uname'] . "','{$upd_date}',0,0)"; } if (!($presult = sql_query($qry, $dbi))) { return '<font color=red>E71:DB error on MembershipRecord save possible constraint violation</font>'; } # // In any case we store the KEYVAL directly into the player record ... # // and we make sure the player is marked as active ... $keyfield = dso_getPassKeyFieldForType($mtype_id); $sql = "update tplayer set {$keyfield}=\"{$v_passnr}\",pactive=1 where pid={$player_id}"; if (!($ans = sql_query($sql, $dbi))) { return 'Database error on keyfield save ...'; } dsolog(1, $usertoken['uname'], 'Created Membership for pid: (' . $player_id . ')'); if ($presult == 1) { return 'Membership Saved'; } else { return 'E88:saving '; } }
/** * purpose: list specific players according to searchstring * params: findstring, findpassnr * returns: renders Page with Browsebar+PlayerTable */ function listall($findstr = '', $findpass = '', $firstLetter = '') { # zeigt einen Table mit einer SpielerListe an global $dbi, $realm_id, $playercode, $usertoken; if (sizeof($usertoken['registermap']) < 1) { die_red('Err58:RegisterMap'); } if (strlen($findstr) < 1 && strlen($findpass) < 1 && strlen($firstLetter) < 1) { $findstr = 'A'; } $aTH = array('Aktiv', 'Vorname', 'Nachname', 'Key-1', 'Key-2', 'PLZ', 'Wohnsitz'); $RS = DB_listPlayers($dbi, 0, $findstr, '', $findpass, '', '', $firstLetter); $target = $playercode . '?func=edit&vpid=%P1%'; $ROWS = RecordsetToClickTable($RS, 0, $target, 0); // OUTPUT // echo setPageTitle('<h3>Liste::Spielereinträge ' . $findstr . '</h3>'); echo LastNameBrowseBar($firstLetter); OpenTable('browse'); echo ArrayToTableHead($aTH); echo $ROWS; CloseTable(); debug('Anzahl der gefundenen Spieler = ' . sizeof($RS)); }
/** * purpose: update / INSERT into existing LEG Record, function is executed once for each Leg * params: $aLegValuePairs array containing ["L:xx" "G:xx" "P:xx" ....] * returns: ORM class Error String * logic: depending on some key values the SAVE is discarded */ function _LS_InsUpdateLegRecord($eventID, &$aLegValuePairs) { require_once "../ORM/leg.php"; require_once "../ORM/legrounds.php"; global $dbi; $event = reteventconfig($eventID); $leg_dist = $event['evsgldist']; if (!$leg_dist > 1) { die_red('Err312:UnknownLegDistance'); } $leg_ID = 0; /* * retrieve the l_id value from the key-pairs */ foreach ($aLegValuePairs as $keypair) { if (substr($keypair, 0, 1) == 'L') { $leg_ID = substr($keypair, 2); } } if ($event['evsgldarts'] == 1) { $cL = new cLeg(); } else { $cL = new cLegRounds(); } $cL->setDB($dbi); $cL->getbyID($leg_ID); /* * decode the denominator strings G,P,S,F ... into field names * set sensible defaults, any OUTPUT is written into the Game-DIV * WE use the new ORM objects for this ... */ foreach ($aLegValuePairs as $keypair) { $aVal = explode(':', $keypair); if (!is_numeric($aVal[1])) { $aVal[1] = 0; } if (sizeof($aVal) > 2) { die_red('E274:SaveLeg:KeyValueError:Please correct and save again'); } /* * decode json and pass values into objects */ switch (strtoupper($aVal[0])) { case 'G': $cL->aDATA['lgid'] = $aVal[1]; break; case 'P': $cL->aDATA['lpid'] = $aVal[1]; break; case 'S': $cL->aDATA['lroundscore'] = $aVal[1]; break; case 'D': $cL->aDATA['ldarts'] = $aVal[1]; break; case 'R': $cL->aDATA['lscore'] = $leg_dist - $aVal[1]; break; case 'C': $cL->aDATA['lroundcheck'] = $aVal[1]; break; case 'F': $cL->aDATA['lfinish'] = $aVal[1]; break; case 'B': $cL->aDATA['lstart'] = $aVal[1]; break; case 'M': $cL->aDATA['lhighscore'] = $aVal[1]; break; case 'M171': $cL->aDATA['lhighscore171'] = $aVal[1]; break; } } /* * logic tests ... same as in GUI ... shall we put this into the DBclass ??? */ if (!$cL->aDATA['lpid'] > 0) { return 0; } if (!$cL->aDATA['lgid'] > 0) { return 0; } if ($event['evsgldarts'] == 1) { if (!$cL->aDATA['ldarts'] > 0) { return 0; } } else { if (!$cL->aDATA['lroundscore'] > 0) { return 0; } if (!$cL->aDATA['lroundcheck'] > 0) { return 0; } } #debug($cL->aDATA); $cL->save(); return $cL->pDBret; }
function _createMatch($mkey, $eventid, $rnum, $vtid, $vdate, $m_loc) { # create entries for # tblmatch, tblmatchteam,tblgame,tblgameplayer # tblleg no entries !!! # location = home team # MatchDate = $vdate # based on the GLOBAL event config global $dbi, $LS_LEVEL, $username, $event; if ($LS_LEVEL < 2) { die_red('Err463:NoAccess ...'); } # where is the location of the HomeTeam ?? $resx = sql_query("select T.id,T.tlocation_id,L.lname from tblteam T,tbllocation L where T.tlocation_id=L.id and T.id={$vtid['0']}", $dbi); $row = sql_fetch_array($resx, $dbi); $resloc = sql_query("select id,lname from tbllocation where id={$m_loc}", $dbi); $rowloc = sql_fetch_array($resloc, $dbi); $loc = $rowloc[lname]; $locid = $rowloc[tlocation_id]; $strsql = "INSERT INTO tblmatch(mid,mkey,mevid,mround,mhtid,matid,mdate,mlocation,mstatus,mactive) values(0,\"{$mkey}\",{$eventid},{$rnum},{$vtid['0']},{$vtid['1']},\"{$vdate}\",\"{$loc}\",0,1)"; #debug($strsql); $resx = sql_query($strsql, $dbi); if ($resx != 1) { die_red('Err480:Event: (' . $event['evname'] . ') Match: ' . $mkey . ' Creation of Match Entry failed'); } # ok now we create the 2 matching records for match - team, match - team ... # make sure we have values instead of NULL ... if (!$vlegs[0]) { $vlegs[0] = 0; $vlegs[1] = 0; } if (!$vsets[0]) { $vsets[0] = 0; $vsets[1] = 0; } if (!$vpoints[0]) { $vpoints[0] = 0; $vpoints[1] = 0; } $strsql = "INSERT into tblmatchteam(mtid,mtmkey,mthome,mttid,mtlegs,mtlegslost,mtsetslost,mtsets,mtpoints) values(0,'{$mkey}',1,{$vtid['0']},{$vlegs['0']},{$vlegs['1']},{$vsets['1']},{$vsets['0']},{$vpoints['0']})"; $resx = sql_query($strsql, $dbi); $strsql = "INSERT into tblmatchteam(mtid,mtmkey,mthome,mttid,mtlegs,mtlegslost,mtsetslost,mtsets,mtpoints) values(0,'{$mkey}',0,{$vtid['1']},{$vlegs['1']},{$vlegs['0']},{$vsets['0']},{$vsets['1']},{$vpoints['1']})"; $resx = sql_query($strsql, $dbi); # finally we create the number of required singel and pairs GAME records ... # read from config ==> use global event ARRAY ?????????? # $resx=sql_query("select E.evsingles,E.evdoubles,E.evsgllegs,E.evdbllegs from tblevent E where E.id=$eventid",$dbi); # $row=sql_fetch_array($resx,$dbi); $iSingle = $event['evsingles']; $iPair = $event['evdoubles']; $iLegSingle = $event['evsgllegs']; $iLegPair = $event['evdbllegs']; # for every single we create 1 game entry and ?? legentries .... for ($i = 1; $i <= $iSingle; $i++) { $strsql = "INSERT INTO tblgame(gid,gmkey,gtype,gsets,glegs,gstatus) values (0,\"{$mkey}\",1,1,{$iLegSingle},0)"; $resx = sql_query($strsql, $dbi); } for ($i = 1; $i <= $iPair; $i++) { $strsql = "INSERT INTO tblgame(gid,gmkey,gtype,gsets,glegs,gstatus) values (0,\"{$mkey}\",2,1,{$iLegPair},0)"; $resx = sql_query($strsql, $dbi); } # // the gameentries are done lets create some fake tblgameplayer entries # // gpid | gpgid | gppid | gpsetwon | gplegswon # // ver 3.17 storing the teamID in the tblgameplayer entry (used for the WO functionality) $presult = sql_query("select gid,gtype from tblgame where gmkey=\"{$mkey}\" order by gid asc", $dbi); while (list($gid, $gtype) = sql_fetch_row($presult, $dbi)) { $i = 0; # // it type = 1 single then 2 entries, for type=2 pairs create 4 entries $thisTeam = 0; for ($i = 0; $i < $gtype * 2; $i++) { if ($gtype == 1) { if ($i == 0) { $thisTeam = $vtid[0]; } if ($i == 1) { $thisTeam = $vtid[1]; } } elseif ($gtype == 2) { if ($i < 2) { $thisTeam = $vtid[0]; } if ($i > 1) { $thisTeam = $vtid[1]; } } $res1 = sql_query("INSERT into tblgameplayer(gpid,gpgid,gppid,gpsetwon,gplegswon,gptid) values(0,{$gid},0,0,0,{$thisTeam})", $dbi); # // we leave the tid entry empty here - this is filled when the player is assigned ... } } # // we do not create ANY LEGENTRIES - these are created by the game-edit-save page on demand ... dsolog(1, $username, 'Match ' . $mkey . ' initialised'); }
/** * purpose this is the system outbox, all messages send by the system * params * returns HTML table with action buttons per row */ function _showOutbox() { global $dbi, $usertoken; if ($usertoken['usertype_id'] < 5) { die_red('Err:Msg95:WrongUser'); } $RS = DB_listMessage($dbi); $HEAD = ''; $ROWS = ''; $ROWS = RecordsetToDataTable($RS, array(1, 2, 3, 5, 6, 7, 8), array('delmessage', 'setmessage'), array(array(0), array(0)), array('Del', 'Chg')); $aTH = array('Status', 'Absender', 'Datum', 'Gruppe', 'Empfänger', 'Link', 'Nachricht', 'Aktion', 'Aktion'); $HEAD = ArrayToTableHead($aTH); // OUTPUT // echo '<script type="text/javascript">$("#pagetitle").html("Outbox");</script>'; echo '<div id=\'mailadm\'>'; echo '<table><tr><td>' . _button('Send Pending Liga', 'msgsendall()') . '</td><td>' . _button('Purge All', 'delall()') . '</td></tr></table>'; echo '</div>'; echo OpenTable('maillist', 1); echo $HEAD . $ROWS; echo CloseTable(1); }
function _blankGame() { die_red('E:WrongAction'); }
<?php include 'empty_main.php'; if (sizeof($usertoken['msgmap']) < 1 && $usertoken['usertype_id'] < 6) { die_red('No access to the Message SubSystem'); } #debug($usertoken['msgmap']); /* * common pageobjects */ $buttons = '<table><tr><td>' . _button('Create', 'msgtab(1)') . '</td><td>' . _button('Inbox', 'msgtab(2)') . '</td><td>' . _button('Outbox', 'msgtab(3)') . '</td></tr></table><hr/>'; echo '<script type="text/javascript" src="code/lsdbmail.js"></script>'; echo '</div>'; echo setPageTitle('Message Center'); echo setPageControlTabs($buttons); LS_page_end();
/** * purpose security controlled membership listing + action buttons for non public access * params * returns HTML Table with rows */ function _listMemberShip($player_id, $verein_id, $mtype_id, $verband_ID, $m_active) { global $dbi, $usertoken; /* create a meaningful type_comparison string */ if ($mtype_id > 0) { $type_comp = '=' . $mtype_id; } else { die_red('Err157:MemberTypeRequired'); } $RS = DB_listMemberShips($dbi, $player_id, $verein_id, $type_comp, $m_active, $verband_ID); if (sizeof($RS) > 2000) { die_red('Selection returns more than 2000 rows (' . sizeof($RS) . ')'); } if (sizeof($RS) < 1) { die_green('Search criteria returns nothing ...'); } /* * no actions for non-registermap members ... */ if (sizeof($usertoken['registermap']) < 1) { $aTH = array('Verein', 'Meldeart', 'PassNr', 'Meldung Ende', 'ID', 'Vorname', 'Nachname'); $ROWS = RecordsetToDataTable($RS, array(2, 3, 4, 5, 6, 7, 8)); } else { $aTH = array('Verein', 'Meldeart', 'PassNr', 'Meldung Ende', 'ID', 'Vorname', 'Nachname', 'Aktion'); $ROWS = RecordsetToDataTable($RS, array(2, 3, 4, 5, 6, 7, 8), array('playeredit', 'memberdel'), array(array(6), array(0, 6)), array('Edit Player', 'Del')); } $HEAD = ArrayToTableHead($aTH); $sum = '<div>Search criteria returned ' . sizeof($RS) . ' records.</div>'; return $sum . '<table class="tchild" id="tmembers" name="tmembers">' . $HEAD . $ROWS . '</table>'; }
function _uploadMembership($file, $membertype_id) { # # // add a payment record to this player ... depending on OEDV / OEDSO # // passnr;start;end;firstname;lastname;vereinID => $membertype_id # // $fp = fopen($file, "r"); while ($lineIn = fgetcsv($fp, 1000, ";")) { if (sizeof($lineIn) < 6) { die_red('Error517:DataSetSize:' . debug($lineIn)); } if (strlen($lineIn[5]) < 5) { die_red('Err518:NoValidVereinsZVR:' . debug($lineIn)); } if (strlen($lineIn[1]) < 8) { die_red('Err519:MalformedStartDate:' . debug($lineIn)); } if (strlen($lineIn[2]) < 8) { die_red('Err519:MalformedEndDate:' . debug($lineIn)); } $RS[] = $lineIn; } fclose($fp); foreach ($RS as $R) { // check if player exist -> msg // check if verein exist -> msg // action .... -> msg $PID = dso_checkPlayerByPassNr($R[0]); if ($PID > 0) { $aMSG[] = '<font color=green>Identified Player ' . $R[3] . ' ' . $R[4] . ' as unique ID:' . $PID . '</font>'; $VID = dso_verifyVereinZVR($R[5]); if ($VID > 0) { $aMSG[] = '<font color=green>Player OK, Verein OK -- adding Membership</font>'; $aMSG[] = dso_insupdmembership(0, $PID, $VID, $membertype_id, $R[0], $R[1], $R[2]); } else { $aMSG[] = '<font color=red>Verein with ID ' . $R[5] . ' not found or no rights to register players for this Verein</font>'; $aMSG[] = '<font color=red>REJECTED LINE:' . $R[0] . ';' . $R[1] . ';' . $R[2] . ';' . $R[3] . ';' . $R[4] . ';' . $R[5] . ';</font>'; } } else { $aMSG[] = '<font color=red>Player ' . $R[3] . ' ' . $R[4] . ' can not be identified, no membership added</font>'; $aMSG[] = '<font color=red>REJECTED LINE:' . $R[0] . ';' . $R[1] . ';' . $R[2] . ';' . $R[3] . ';' . $R[4] . ';' . $R[5] . ';</font>'; } } // == OUTPUT == // // ============ // echo setPageTitle('Log Output from Bulk IMPORT (Records:' . sizeof($RS) . ') for Type=' . $membertype_id); echo '<p>The loader is doing some minimum checks on the expected fieldvalues - rejected entries are shown in <font color="red">red</font>.</p>'; OpenTable('output'); foreach ($aMSG as $MSG) { echo '<tr><td>' . $MSG . '</td></tr>'; } CloseTable(); }
function _saveComment($match_key, $match_comment) { global $dbi; $qry1 = 'UPDATE tblmatch set mcomment=\'' . $match_comment . '\' where mkey=\'' . $match_key . '\' limit 1'; $p1 = sql_query($qry1, $dbi); if ($p1 == 1) { die_green('Saved'); } else { die_red('Error'); } }
} else { $player_id = 0; } # this is either 'true' or 'undefined' if (isset($_POST['mactive']) && strip_tags($_POST['mactive']) == 'true') { $m_active = 1; } else { $m_active = 0; } /* * security check on the length of params ... */ if ($m_code > 0) { $type_comp = '=' . $m_code; } else { $type_comp = '>0'; } $dbi = sql_connect($dbhost, $dbuname, $dbpass, $dbname); $RS = DB_listMemberShips($dbi, $player_id, $verein_id, $type_comp, $m_active, $m_realm); if (sizeof($RS) > 2000) { die_red('Selection returns more than 2000 rows (' . sizeof($RS) . ')'); } if (sizeof($RS) < 1) { die_green('Search criteria returns nothing ...'); } $aTH = array('Verein', 'Meldeart', 'PassNr', 'Meldung Ende', 'Vorname', 'Nachname'); $ROWS = RecordsetToDataTable($RS, array(2, 3, 4, 5, 7, 8)); $HEAD = ArrayToTableHead($aTH); header('Content-Type: application/html; charset=ISO-8859-1'); echo '<table class="tchild" id="tmembers" name="tmembers">' . $HEAD . $ROWS . '</table>'; debug('Search criteria returned ' . sizeof($RS) . ' records.');
<?php /* * Interface to the Locations Table * Showing a typical Master Detail Edit View * ActiveLocations show ChildRecords from the Teams Table */ include 'empty_main.php'; if ($usertoken['usertype_id'] < 4) { die_red('E:LOC1:ErrType'); } echo '<script type="text/javascript" src="code/AjaxRequestCompact.js"></script>'; echo '<script type="text/javascript" src="code/axlocationcode.js"></script>'; # // Beginn Funktionen ---------------- $tdbg = '#888888'; // this is the boxing and frames effect .... $tdWon = '#ccffcc'; $tdLost = '#ffcccc'; function _LS_LocationPage() { global $dbi, $event, $tdbg; echo setPageTitle('Manage Locations'); echo '<p>Hier werden die Spielstätten bzw. Locations im gesamten Bundesgebiet angezeigt. Ein Klick auf einen Eintrag ladet diesen zum Bearbeiten.<br><b>Unterhalb</b> der Datenmaske werden zugleich alle eingetragenen Heimmannschaften aus dem LigaSystem angezeigt.</p>'; # SECTION 0 Navigation echo '<table bgcolor="' . $tdbg . '" cellpadding="2" cellspacing="1"><tr><td id="btnrefresh" bgcolor="white" onclick="initlocationpage()" onMouseOver="mover(this)" onMouseOut="mout(this)">Tabelle neu laden</td>' . '<td></td><td bgcolor="white" id="locbrowseActivity"><i>Ready</i></td>' . '<td></td><td bgcolor="white" id="locsaveActivity"><i>Ready</i></td>' . '</tr></table><br>'; $location_count_result = sql_query('SELECT COUNT(*) FROM tbllocation l, tverband v WHERE l.lrealm_id = v.id', $dbi); $location_count = 0; while (list($count) = sql_fetch_row($location_count_result, $dbi)) { $location_count = $count; } $response->page = 1;
<?php /* * Controlling modul for the LIGA SYSTEM * Access ONLY for user.type = LigaSysAdmin or higher ... * old stuff was LS_LEVEL must be 3 ... * There is no global EVENT or EVENTID any longer */ #TODO add common DIV Layout ... include "empty_main.php"; include "func_stat.php"; // old access mode ... if (sizeof($usertoken['eventmap']) < 1) { die_red('Err16:NotAllowed'); } # // Beginn Funktionen ---------------- $tdbg = "#CCDDCC"; $tdWon = "#ccffcc"; $tdLost = "#ffcccc"; function _blank() { echo '<h3>Liga Modul - System Controlling</h3>'; OpenTable('mnudebug'); echo '<tr><td>' . _button('Zeige alle Spiele mit ungerader Leg Anzahl aus allen aktiven Bewerben', '', 'ls_debug.php?func=oddlegs') . '<td></tr>'; echo '<tr><td>' . _button('Zeige alle Legs mit IRREALEN Runden Werten aus allen aktiven Bewerben', '', 'ls_debug.php?func=weirdlegs') . '<td></tr>'; echo '<tr><td>' . _button('Zeige alle Legs mit IRREALEN Darts Werten aus allen aktiven Bewerben', '', 'ls_debug.php?func=strangelegs') . '<td></tr>'; echo '<tr><td>' . _button('Zeige alle gespielten Matches einer Liga Gruppe und ihren Status', '', 'ls_debug.php?func=matches&stat=1') . '<td></tr>'; echo '<tr><td>' . _button('Berechne fiktive Rangliste ALLER Spieler einer Statistikgruppe für einen beliebigen Zeitpunkt', '', 'ls_debug.php?func=allranking') . '<td></tr>'; echo '<tr><td>' . _button('Zeige alle Teams einer Ligagruppe', '', 'ls_debug.php?func=allteams') . '<td></tr>'; echo '<tr><td>' . _button('Zeige alle Spieler/Teams einer Ligagruppe', '', 'ls_debug.php?func=allplayers') . '<td></tr>'; CloseTable();