/** * 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 '; } }
function _uploadnewPlayer($file, $membertype_id) { /** # // Method to bulk INSERT NEW players, do some minimum field checks .. # // we expect a ; seperation not a TAB ... # // # // Passnr,Vorname,Nachname,gebdatum,gender,nation,stadt,plz,adresse,tel1,tel2,email,kommentar # // $membertype_id = type of passnumber to search or even generate ... **/ $passkey = dso_getPassKeyFieldForType($membertype_id); $fp = fopen($file, "r"); echo setPageTitle('Log Output from Bulk IMPORT'); print "<p>The loader is doing some minimum checks on the expected fieldvalues - rejected entries are shown in <font color=\"red\">red</font>. Please correct the values and reload the file.</p>"; opentable(); $l = 0; while ($data = fgetcsv($fp, 1000, ";")) { $num = count($data); $l++; if ($num < 3) { print "Line {$l} Data too short ..."; break; } # default values ... # TODO v5 replace with ORM backend ... $aP = array(); $aP['passnr'] = ''; $aP['firstname'] = ''; $aP['lastname'] = ''; $aP['birthdate'] = '1901-01-01'; $aP['gender'] = 'H'; $aP['nation'] = ''; $aP['town'] = ''; $aP['plz'] = ''; $aP['street'] = ''; $aP['tel1'] = ''; $aP['tel2'] = ''; $aP['email'] = ''; $aP['comment'] = 'eGate upload'; for ($c = 0; $c < $num; $c++) { if (strlen($data[$c]) > 0) { switch ($c) { case "0": $aP['passnr'] = $data[$c]; break; case "1": $aP['firstname'] = $data[$c]; break; case "2": $aP['lastname'] = $data[$c]; break; case "3": $aP['birthdate'] = $data[$c]; break; case "4": $aP['gender'] = $data[$c]; break; case "5": $aP['nation'] = $data[$c]; break; case "6": $aP['town'] = $data[$c]; break; case "7": $aP['plz'] = $data[$c]; break; case "8": $aP['street'] = $data[$c]; break; case "9": $aP['tel1'] = $data[$c]; break; case "10": $aP['tel2'] = $data[$c]; break; case "11": $aP['email'] = $data[$c]; break; case "12": $aP['comment'] = $data[$c]; break; } } else { # use the pre-set defaults .... } } # end for data split _InsertUpdatePlayer($aP, $passkey); } # end while ... fclose($fp); CloseTable(); }