/** * Vis auksjonen */ protected function show() { // hent budet som leder, evt. vant $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ab_up_id, ab_bid, ab_time\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0\n\t\t\tORDER BY ab_time DESC\n\t\t\tLIMIT 1"); $bud_lead = $result->fetch(); // hent alle budene $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 30); $result = $pagei->query("\n\t\t\tSELECT ab_up_id, ab_bid, ab_time, ab_active\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id}\n\t\t\tORDER BY ab_time DESC"); $bud = array(); while ($row = $result->fetch()) { $bud[] = $row; } // sjekk om vi har bud $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ab_bid, ab_time\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id} AND ab_up_id = {$this->up->id} AND ab_active != 0"); $bud_own = $result->fetch(); $bud_own_locked = $this->auksjon->data['a_type'] == auksjon::TYPE_KULER || time() > $bud_own['ab_time'] + auksjon::MAX_TIME_REMOVE; $type = auksjon_type::get($this->auksjon->data['a_type']); // beregn minstepris $minstepris = $bud_lead ? bcadd($bud_lead['ab_bid'], $this->auksjon->data['a_bid_jump']) : $this->auksjon->data['a_bid_start']; // sett opp tittel/beskrivelse $title = htmlspecialchars($this->auksjon->data['a_title']); // firma/familie? if ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA) { $ff_id = $this->auksjon->params->get("ff_id"); if ($ff_id) { $title = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $ff_id . '">' . $title . '</a>'; } } echo ' <div class="col2_w" style="margin: 40px"> <div class="col_w left" style="width: 45%"> <div class="col" style="margin-right: 20px"> <div class="bg1_c"> <h1 class="bg1">Auksjon<span class="left"></span><span class="right"></span></h1> <div class="bg1"> <p class="c"><a href="auksjoner?t=' . $this->auksjon->data['a_type'] . '">Tilbake til oversikt</a></p> <dl class="dd_right"> <dt>Beskrivelse</dt> <dd>' . $title . '</dd>' . ($type->have_up ? ' <dt>Spiller</dt> <dd>' . ($this->auksjon->data['a_up_id'] ? '<user id="' . $this->auksjon->data['a_up_id'] . '" />' : 'Ingen spiller') . '</dd>' : ''); // ikke startet? if ($this->auksjon->status == auksjon::STATUS_WAIT) { echo ' <dt>Auksjonsstart</dt> <dd>' . ess::$b->date->get($this->auksjon->data['a_start'])->format(date::FORMAT_SEC) . '<br />' . game::counter($this->auksjon->data['a_start'] - time(), true) . '</dd> <dt>Auksjonslutt</dt> <dd>' . ess::$b->date->get($this->auksjon->data['a_end'])->format(date::FORMAT_SEC) . '</dd>'; } else { echo ' <dt>Auksjonslutt</dt> <dd>' . ess::$b->date->get($this->auksjon->data['a_end'])->format(date::FORMAT_SEC) . ($this->auksjon->status == auksjon::STATUS_ACTIVE ? '<br />' . game::counter($this->auksjon->data['a_end'] - time(), true) : '') . '</dd>'; } // vis info echo ' <dt>Budstart</dt> <dd>' . game::format_cash($this->auksjon->data['a_bid_start']) . '</dd> <dt>Minste budøkning</dt> <dd>' . game::format_cash($this->auksjon->data['a_bid_jump']) . '</dd>'; // status if ($this->auksjon->status == auksjon::STATUS_WAIT) { // ikke startet echo ' <dt>Status</dt> <dd>Ikke startet</dd>'; } elseif ($this->auksjon->status == auksjon::STATUS_FINISHED) { // ferdig echo ' <dt>Status</dt> <dd>Avsluttet</dd> <dt>Vunnet av</dt>'; // vinnerbudet if ($bud_lead) { echo ' <dd><user id="' . $bud_lead['ab_up_id'] . '" /></dd>'; } else { echo ' <dd>Ingen vinner</dd>'; } } else { // pågår echo ' <dt>Status</dt> <dd>Pågår nå</dd>'; } echo ' </dl>'; // mer info? if (!empty($this->auksjon->data['a_info'])) { echo ' <p>' . game::bb_to_html($this->auksjon->data['a_info']) . '</p>'; } echo ' </div> </div> </div> </div> <div class="col_w right" style="width: 55%"> <div class="col" style="margin-left: 20px"> <div class="bg1_c"> <h1 class="bg1">Bud<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; // auksjon pågår -- legg til nye bud if ($this->auksjon->status == auksjon::STATUS_ACTIVE) { $own = $this->auksjon->data['a_up_id'] == $this->up->id; if (!$own) { // første budet? if (!$bud_lead) { echo ' <p>Dette er det første budet på denne auksjonen. Du må derfor by minimum ' . game::format_cash($this->auksjon->data['a_bid_start']) . '.</p>'; } else { echo ' <p>Du må by minimum ' . game::format_cash($this->auksjon->data['a_bid_jump']) . ' høyere enn ' . ($bud_lead['ab_up_id'] == $this->up->id ? 'ditt forrige bud' : 'det forrige budet til <user id="' . $bud_lead['ab_up_id'] . '" />') . ' på ' . game::format_cash($bud_lead['ab_bid']) . '.</p>'; } // bud på kuler kan ikke trekkes tilbake // TODO: om noe kan trekkes tilbake bør bestemmes av auksjonen, ikke logikken i koden her if ($this->auksjon->data['a_type'] == auksjon::TYPE_KULER) { echo ' <p><b>Budet er bindende og kan ikke trekkes tilbake!</b></p> <p>Dersom noen byr over deg, vil budet ditt bli inaktivt og du får pengene igjen.</p>'; } else { echo ' <p>Du kan trekke tilbake budet ditt innen det har gått ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL) . '. Etter ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL | game::TIME_NOBOLD) . ' er budet ditt bindende og det kan ikke trekkes tilbake.</p> <p>Dersom noen byr over deg, vil budet ditt bli inaktivt og du får pengene igjen etter at budet har stått i ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL | game::TIME_NOBOLD) . '.</p>'; } } // har vi bydd? if ($bud_own) { // gått ut på tid? if ($bud_own_locked) { echo ' <p>Du har bydd på denne auksjonen og ditt bud er bindende.</p>'; } else { // kan trekke budet echo ' <p>Du har bydd på denne auksjonen og kan fortsatt trekke tilbake ditt bud.</p>'; } // vis budøkning echo ' <form action="" method="post"> <dl class="dd_right"> <dt>Øk bud til</dt> <dd><input class="styled w100 r" type="text" name="amount" value="' . game::format_cash($minstepris) . '" /></dd> </dl> <p class="c">' . show_sbutton("Øk bud", 'name="raise_bid"') . (!$bud_own_locked ? ' ' . show_sbutton("Slett bud", 'name="del_bid"') : '') . '</p> </form>'; } elseif (!$own) { // har ikke noe våpen? if ($this->auksjon->data['a_type'] == auksjon::TYPE_KULER && !$this->up->weapon) { echo ' <p>Du har ikke noe våpen og kan ikke delta i denne auksjonen.</p>'; } elseif ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA && $this->up->get_health_percent() < player::FF_HEALTH_LOW * 100) { echo ' <p>Du har for lav helse til å kunne by på et firma.</p>'; } else { echo ' <form action="" method="post"> <dl class="dd_right"> <dt>Legg inn bud</dt> <dd><input class="styled w100 r" type="text" name="amount" value="' . game::format_cash($minstepris) . '" /></dd> </dl> <p class="c">' . show_sbutton("Legg inn bud", 'name="place_bid"') . '</p> </form>'; } } } // vis budene if (count($bud) == 0) { if ($this->auksjon->status != auksjon::STATUS_WAIT) { echo ' <p class="c">Ingen bud er lagt inn i denne auksjonen.</p>'; } } else { ess::$b->page->add_css('.bud_inactive { text-decoration: line-through; color: #888 }'); echo ' <dl class="dd_right">'; // gå gjennom alle budene foreach ($bud as $row) { echo ' <dt' . ($row['ab_active'] == 0 ? ' class="bud_inactive"' : '') . '>' . ess::$b->date->get($row['ab_time'])->format("H:i:s") . ': <user id="' . $row['ab_up_id'] . '" /></dt> <dd' . ($row['ab_active'] == 0 ? ' class="bud_inactive"' : '') . '>' . game::format_cash($row['ab_bid']) . '</dd>'; } echo ' </dl>'; if ($pagei->pages > 1) { echo ' <p class="c">' . $pagei->pagenumbers() . '</p>'; } } echo ' </div> </div> </div> </div> </div>'; }
/** * Vis aktive auksjoner */ protected function show_auksjoner() { // hent aktive auksjonene og høyeste bud $time = time(); $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT\n\t\t\t\ta_id, a_type, a_title, a_up_id, a_end, a_bid_start, a_num_bids,\n\t\t\t\tab_bid, ab_up_id, ab_time\n\t\t\tFROM auksjoner\n\t\t\t\tLEFT JOIN (\n\t\t\t\t\tSELECT ab_id, ab_a_id, ab_bid, ab_up_id, ab_time\n\t\t\t\t\tFROM auksjoner_bud\n\t\t\t\t\tWHERE ab_active != 0\n\t\t\t\t\tORDER BY ab_time DESC\n\t\t\t\t) AS auksjoner_bud ON a_id = ab_a_id\n\t\t\tWHERE a_active != 0 AND a_completed = 0 AND a_start <= {$time} AND a_end >= {$time}\n\t\t\tGROUP BY a_id\n\t\t\tORDER BY a_end, ab_time DESC, a_title\n\t\t\tLIMIT 5"); // ingen aktive auksjoner? if ($result->rowCount() == 0) { return; } $data = ' <p>Aktive auksjoner</p> <dl class="dd_right">'; while ($row = $result->fetch()) { $type = auksjon_type::get($row['a_type']); $data .= ' <dt><a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $row['a_id'] . '">' . $type->format_title($row) . '</a>' . ($type->have_up && $row['a_up_id'] ? ' av <user id="' . $row['a_up_id'] . '" />' : '') . '</dt> <dd>' . ess::$b->date->get($row['a_end'])->format(date::FORMAT_SEC) . '<br />' . (!$row['ab_time'] ? ' Budstart: ' . game::format_cash($row['a_bid_start']) : ' ' . game::format_cash($row['ab_bid']) . ' av <user id="' . $row['ab_up_id'] . '" />') . ' </dd>'; } $data .= ' </dl>'; $this->put_box($data); }