/** * Vis en bestemt utgivelse */ protected function specific_publication() { // hent informasjon $ffn = ff_avis_utgivelse::get(intval(getval("ffn")), $this->ff); // fant ikke? if (!$ffn) { ess::$b->page->add_message("Fant ikke utgivelsen.", "error"); $this->ff->load_page(); } redirect::store("avis?ff_id={$this->ff->id}&ffn={$ffn->id}"); ess::$b->page->add_title($ffn->data['ffn_title']); // hent kjøpsinformasjon $ffnp = null; if (login::$logged_in) { $result = \Kofradia\DB::get()->query("SELECT ffnp_cost, ffnp_time FROM ff_newspapers_payments WHERE ffnp_ffn_id = {$ffn->id} AND ffnp_up_id = " . login::$user->player->id); $ffnp = $result->fetch(); } // ikke publisert? if ($ffn->data['ffn_published'] == 0) { if (!$this->ff->access(3)) { ess::$b->page->add_message("Fant ikke utgivelsen.", "error"); $this->ff->load_page(); } redirect::handle("avis?ff_id={$this->ff->id}&u&ffn={$ffn->id}"); } // må vi kjøpe avisutgivelsen? if ($this->ff->active && (!login::$logged_in || !$this->ff->access() && !access::is_nostat() && !$ffnp)) { // har ikke kjøpt avisen, men avisen er gratis? if (login::$logged_in && (!$ffnp && $ffn->data['ffn_cost'] == 0)) { // opprett rad for betaling \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time()); // oppdater utgivelsen \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}"); redirect::handle(); } else { ess::$b->page->add_title("Kjøp utgivelse"); // kjøpe? if (login::$logged_in && isset($_POST['buy'])) { $sid = postval("sid"); $price = postval("price"); if ($sid != login::$info['ses_id']) { ess::$b->page->add_message("Ugyldig.", "error"); } elseif ($price != $ffn->data['ffn_cost']) { ess::$b->page->add_message("Prisen har endret seg. Du må utføre handlingen på nytt.", "error"); } elseif (login::$user->player->data['up_cash'] < $ffn->data['ffn_cost']) { ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error"); } else { // trekk fra pengene fra brukeren if ($ffn->data['ffn_cost'] != 0) { $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$ffn->data['ffn_cost']} WHERE up_id = " . login::$user->player->id . " AND up_cash >= {$ffn->data['ffn_cost']}"); } // mislykket if ($ffn->data['ffn_cost'] != 0 && $a == 0) { ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error"); } else { // legg til oppføring \Kofradia\DB::get()->exec("INSERT INTO ff_newspapers_payments SET ffnp_ffn_id = {$ffn->id}, ffnp_up_id = " . login::$user->player->id . ", ffnp_cost = {$ffn->data['ffn_cost']}, ffnp_time = " . time()); // gi pengene til firmaet \Kofradia\DB::get()->exec("UPDATE ff SET ff_bank = ff_bank + {$ffn->data['ffn_cost']} WHERE ff_id = {$this->ff->id}"); // stats for firmaet $ffn->ff->stats_update("money_in", $ffn->data['ffn_cost']); // oppdater utgivelsen \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_sold = ffn_sold + 1, ffn_income = ffn_income + {$ffn->data['ffn_cost']} WHERE ffn_id = {$ffn->id}"); ess::$b->page->add_message("Du har kjøpt utgivelsen for " . game::format_cash($ffn->data['ffn_cost']) . "."); redirect::handle(); } } } echo ' <p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ' | Kjøp utgivelse | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p> <div class="section center w200"> <h2>Utgivelseinformasjon</h2> <dl class="dd_right"> <dt>Publisert</dt> <dd>' . ess::$b->date->get($ffn->data['ffn_published_time'])->format() . '</dd> <dt>Solgt utgivelser</dt> <dd>' . game::format_number($ffn->data['ffn_sold']) . '</dd> </dl> <p>Artikler:</p>'; // hent artiklene $result = \Kofradia\DB::get()->query("SELECT ffna_title FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} ORDER BY ffna_title"); // ingen artikler? if ($result->rowCount() == 0) { echo ' <p>Ingen artikler.</p>'; } else { echo ' <ul>'; while ($row = $result->fetch()) { echo ' <li>' . htmlspecialchars($row['ffna_title']) . '</li>'; } echo ' </ul>'; } echo ' </div>'; if (login::$logged_in) { echo ' <form action="" method="post"> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <input type="hidden" name="price" value="' . $ffn->data['ffn_cost'] . '" /> <div class="section center w200"> <h2>Kjøp utgivelse</h2> <p>Før du får tilgang til denne utgivelsen må du kjøpe den.</p> <dl class="dd_right"> <dt>Pris</dt> <dd>' . game::format_cash($ffn->data['ffn_cost']) . '</dd> </dl> <p class="c">' . show_sbutton("Kjøp utgivelse", 'name="buy"') . '</p> </div> </form>'; } else { echo ' <p class="c">Du må <a href="&rpath;/">logge inn</a> for å kjøpe og lese denne utgivelsen.</p>'; } $this->ff->load_page(); } } // hent data $data = $ffn->build_avis_html(); echo ' <p class="c">' . htmlspecialchars($ffn->data['ffn_title']) . ($this->ff->access(3) ? ' | <a href="avis?ff_id=' . $this->ff->id . '&u&ffn=' . $ffn->data['ffn_id'] . '">Vis detaljer</a>' : '') . ' | <a href="avis?ff_id=' . $this->ff->id . '">Tilbake</a></p>' . $data; }
/** * Hent utgivelse */ public function load_ffn() { $this->ffn = $this->data['ffna_ffn_id'] == 0 ? null : ff_avis_utgivelse::get($this->data['ffna_ffn_id'], $this->ff); }