<?php class rally{ private $db; private $session = array(); private $get = array(); private $grund; function __construct(){ global $datenbank,$_SESSION,$_GET,$grundconfig; $this->db = $datenbank; $this->session = $this->db->escape($_SESSION); $this->get = $this->db->escape($_GET); $this->grund = $grundconfig; } public function RallyDaten($rally){ $rally = $this->db->escape($rally); $ret = $this->db->get_row("SELECT * FROM ". PREFIX . RALLY ." WHERE name = '$rally' ",true); return $ret; } public function Info($row){ $aus = ''; $gesperrt = explode(',', $row->sperruser); if (in_array($_SESSION['uid'], $gesperrt)) { $aus .= '<br><b><font size="+1" color="#9F0101">!!Gesperrt!!<br>Sie wurden vom Admin von dieser Rally ausgeschlossen.</font></b><br><br>'; }else{ $aus .= $this->SelfStatus($row); $aus .= '<hr><div class="card"><div class="card-body">'; $aus .= $this->RallyEnde($row); $aus .= '<hr>'; $aus .= $this->RallyGewinnart($row); $aus .= '<hr>'; $aus .= $this->RallyAktuell($row); $aus .= '</div>'; } return $aus; } private function RallyAktuell($row){ $rp = 1; $aus = ' <table class="table table-striped"> <tr> <th width="30"><b>Rang</b></th> <th><b>User</b></th> <th width="100"><b>' . $row->einheit . '</b></th> <th width="180"><b>möglicher Gewinn</b></th> <th width="110"><b>Mindestpunktzahl</b></th> </tr> '; $gesperrt = explode(";",$row->sperruser); foreach($this->db->get_results("SELECT uid,punkte FROM ". PREFIX . RALLYU ." WHERE rally = '$row->id' AND ausgezahlt = '0' ORDER BY punkte DESC") AS $res){ if(!in_array($res->uid,$gesperrt) && $row->gewinner_anzahl >= $rp){ $pl = 'p'.$rp; $user = userinfo($res->uid); if($res->punkte < $row->mindestpunktzhl){ $classtd = 'table-warning'; $mg = 'nicht erreicht';} if($res->punkte >= $row->mindestpunktzhl){ $classtd = 'table-success'; $mg = 'erreicht';} $aus .= ' <tr class="'. $classtd .'"> <td>'. $rp .'</td> <td>'. $user->nickname .'</td> <td>'. $res->punkte .'</td> <td>'. number_format(($row->gewinn_topf / 100 * $row->$pl), 2, ',', '.') .' '. $this->grund->waehrung .'</td> <td>'. $mg .'</td> </tr> '; $rp++; } } for($x = $rp;$x < $row->gewinner_anzahl + 1;$x++) { $pl = 'p'.$rp; $mg = number_format(($row->gewinn_topf / 100 * $row->$pl), 2, ',', '.') . ' ' . $this->grund->waehrung; $aus .= ' <tr class="table-info"> <td>'. $rp++ .' </td> <td> n/a</td> <td>0 </td> <td>'. $mg .' </td> <td><strong>Wartend</strong></td> </tr> '; } $aus .= '</table>'; return $aus; } private function RallyGewinnart($row){ if ($row->gewinn_art == 'dynamisch') { $aus = 'Es handelt sich bei der ' . $row->name . '-Rally um eine Dynamische Rally. <br> Dies bedeutet der Gewinn pro Rang steigt mit der Aktivität der User in der Rally. <br> Der Gewinn-Topf ist nach oben nicht begrenzt und beträgt aktuell ' . number_format($row->gewinn_topf,2,',','.') . ' ' . $this->grund->waehrung . '. <br> '; } else { $aus = 'Es handelt sich bei der ' . $row->name . '-Rally um eine Statische Rally. <br> Die gesammte Gewinnsumme beläuft sich auf ' . number_format($row->gewinn_topf,2,',','.') . ' ' . $this->grund->waehrung . '. <br>'; } $aus .= '<hr>'; if ($row->mindestpunktzhl > '0') { $aus .= '<br>Sie müssen mindestens ' . $row->mindestpunktzhl . ' ' . $row->ende_formulierung . ' haben um in der Rally gewertet zu werden<br><br>'; } return $aus; } private function RallyEnde($row){ if ($row->ende_art == 'punkt') { $aus = 'Diese ' . $row->name . '-Rally endet soball alle gemeinsam ' . $row->ende_punkte . ' ' . $row->ende_formulierung . ' haben.<br> '; } elseif ($row->ende_vortschritt == 'datum') { $aus = 'Diese ' . $row->name . '-Rally endet am ' . date('j F Y G:i', strtotime($row->ende_date.'T'.$row->ende_time)) . '<br>'; } else { $aus = 'Diese Rally hat kein Ende. Sie wird immer wieder in bestimmten Abständen (' . $row->ende_vortschritt . ') neu gestartet.<br>'; } return $aus; } private function SelfStatus($row){ $aus = ''; if ($this->session['login'] == true) { if($this->db->num_rows("SELECT uid FROM ". PREFIX. RALLYU ." WHERE uid = '". $this->session['uid'] ."' AND rally = '$row->id' ") == 1){ $rallystand = $this->db->get_row("SELECT punkte FROM ". PREFIX . RALLYU ." WHERE uid=" . $this->session['uid'] . " and rally = '$row->id' LIMIT 1",true); $aus = '<div class="alert alert-info">Du hast in der ' . $row->name . '-Rally bereits ' . number_format($rallystand->punkte, 0, ",", ".") . ' ' . nl2br($row->ende_formulierung) . '.</div>'; }else{ $aus = '<div class="alert alert-warning">Du hast in dieser Rally noch keine Punkte erziehlt.</div>'; } } return $aus; } public function ProgressBar($row,$start,$ende){ if ($row->status != 'aktive') { $swf_prozent = 0; $swf_status = "Rally aktuell Inaktive."; } else if (time() < $start) { $swf_prozent = 0; $swf_status = "Noch nicht gestartet."; } elseif (($row->ende_art == 'zeit' && $ende <= time()) OR ($row->ende_art == 'punkt' && $row->ende_punkte <= $row->ende_punkte_aktuell)) { $swf_prozent = 100; $swf_status = "Erfolgreich Beendet."; } else { if ($row->ende_art == 'zeit') { if ($row->ende_vortschritt == 'datum') { $swf_prozent = number_format((time() - $start) / ($ende - $start) * 100, 0, ',', '\''); $swf_status = sectodays(strtotime($row->ende_date.' '.$row->ende_time) - time()); } elseif ($row->ende_vortschritt == 'Jeden Tag') { $tag = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $ende = $tag + (24 * 60 * 60); $swf_prozent = number_format((time() - $tag) / ($ende - $tag) * 100, 0, ',', '\''); $swf_status = sectodays($ende - time()); } elseif ($row->ende_vortschritt == 'Jede Woche') { if (date('w') == 0) $wochentag = 7; if (date('w') != 0) $wochentag = date('w'); $tag = mktime(0, 0, 0, date('m'), (date('d') - $wochentag + 1), date('Y')); $ende = $tag + (7 * 24 * 60 * 60); $swf_prozent = number_format((time() - $tag) / ($ende - $tag) * 100, 0, ',', '\''); $swf_status = sectodays($ende - time()); } elseif ($row->ende_vortschritt == 'Jeden Monat') { $tag = mktime(0, 0, 0, date('m'), 1, date('Y')); $ende = mktime(23, 59, 59, (date('m') + 1), 0, date('Y')); $swf_prozent = number_format((time() - $tag) / ($ende - $tag) * 100, 0, ',', '\''); $swf_status = sectodays($ende - time()); } elseif ($row->ende_vortschritt == 'Jedes Jahr') { $wochentag = 365 - date('z'); $tag = mktime(0, 0, 0, 1, 1, date('Y')); $ende = $tag + (365 * 24 * 60 * 60); $swf_prozent = number_format((time() - $tag) / ($ende - $tag) * 100, 0, ',', '\''); $swf_status = sectodays($ende - time()); } } else { $swf_prozent = number_format(100 / $row->ende_punkte * $row->ende_punkte_aktuell, 2, ',', '\''); $swf_status = 'Es sind noch ' . ($row->ende_punkte - $row->ende_punkte_aktuell) . ' ' . $row->einheit . ' bis zum Ende'; } } return '<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="'. $swf_prozent .'" aria-valuemin="0" aria-valuemax="100" style="width: '. $swf_prozent .'%; color:black;">'. $swf_status .'</div>'; } }