Exemplo n.º 1
0
 }
 function like_search($value)
 {
     return strtr($value, array('_' => '\\_', '%' => '\\%', '*' => '%', '?' => '_'));
 }
 if (count($up_name) > 0) {
     $where[] = "(up_name LIKE " . implode(" OR up_name LIKE ", array_map("like_search", array_map(array($_base->db, "quote"), $up_name))) . ")";
 }
 if (count($ip) > 0) {
     $where[] = "(u_online_ip LIKE " . implode(" OR u_online_ip LIKE ", array_map("like_search", array_map(array($_base->db, "quote"), $ip))) . ")";
 }
 if (count($email) > 0) {
     $where[] = "(u_email LIKE " . implode(" OR u_email LIKE ", array_map("like_search", array_map(array($_base->db, "quote"), $email))) . ")";
 }
 // sortering
 $sort = new sorts("sort");
 $sort->append("asc", "Bruker ID", "u_id");
 $sort->append("desc", "Bruker ID", "u_id DESC");
 $sort->append("asc", "Spillernavn", "up_name");
 $sort->append("desc", "Spillernavn", "up_name DESC");
 $sort->append("asc", "IP-adresse", "u_online_ip");
 $sort->append("desc", "IP-adresse", "u_online_ip DESC");
 $sort->append("asc", "Registrert", "up_created_time");
 $sort->append("desc", "Registrert", "up_created_time DESC");
 $sort->append("asc", "E-postadresse", "u_email");
 $sort->append("desc", "E-postadresse", "u_email DESC");
 $sort->append("asc", "Sist pålogget", "up_last_online");
 $sort->append("desc", "Sist pålogget", "up_last_online DESC");
 $sort->append("asc", "Hits", "up_hits");
 $sort->append("desc", "Hits", "up_hits DESC");
 $sort->append("asc", "Rank", "up_points");
Exemplo n.º 2
0
 /**
  * View list of contacts
  */
 public function action_list()
 {
     $sort_k = new \sorts("sort", "/kontakter");
     $sort_k->append("asc", "Navn", "up_name");
     $sort_k->append("desc", "Navn", "up_name DESC");
     $sort_k->append("asc", "Sist aktiv", "up_last_online DESC");
     $sort_k->append("desc", "Sist aktiv", "up_last_online");
     $sort_k->append("asc", "Lagt til som kontakt", "uc_time");
     $sort_k->append("desc", "Lagt til som kontakt", "uc_time DESC");
     $sort_k->set_active(getval('sort'), 0);
     $sort_b = new \sorts("sort", "/kontakter");
     $sort_b->append("asc", "Navn", "up_name");
     $sort_b->append("desc", "Navn", "up_name DESC");
     $sort_b->append("asc", "Sist aktiv", "up_last_online DESC");
     $sort_b->append("desc", "Sist aktiv", "up_last_online");
     $sort_b->append("asc", "Lagt til som blokkering", "uc_time");
     $sort_b->append("desc", "Lagt til som blokkering", "uc_time DESC");
     $sort_b->set_active(getval('sort'), 0);
     $sort_by = $sort_k->active()['params'];
     $contacts = Contact::getContacts($this->user, $sort_by);
     $by_type = array(Contact::TYPE_FRIEND => array(), Contact::TYPE_BLOCK => array());
     foreach ($contacts as $contact) {
         $by_type[$contact->getType()][] = $contact;
     }
     return View::forge("users/contacts/list", array("friends" => $by_type[Contact::TYPE_FRIEND], "blocks" => $by_type[Contact::TYPE_BLOCK], "friends_sort" => $sort_k, "blocks_sort" => $sort_b));
 }
Exemplo n.º 3
0
            $search_from_id = 1;
        } else {
            $where = count($players) == 1 ? '= ' . current(array_keys($players)) : 'IN (' . implode(",", array_keys($players)) . ')';
            $search_from[4][1] = " AND ft_up_id {$where}";
            $search_from[4][2] = " AND fr.fr_up_id {$where}";
        }
    }
}
$search_from_topic_query = $search_from[$search_from_id][1];
$search_from_reply_query = $search_from[$search_from_id][2];
// slettet
$search_deleted = array(1 => array("<b>Skjul alle</b> slettede forumtråder og forumsvar", " AND ft_deleted = 0", " AND ft_deleted = 0 AND fr.fr_deleted = 0"), array("<b>Skjul</b> slettede <b>forumsvar</b>, <b>vis</b> slettede <b>forumtråder</b>", "", " AND fr.fr_deleted = 0"), array("<b>Vis slettede</b> forumtråder og forumsvar", "", ""));
$id = requestval("d");
$search_deleted_id = isset($search_deleted[$id]) && $allow_deleted ? $id : 1;
// sortering
$sort = new sorts("sort");
$sort->append("asc", "Tittel", "ft_title, ft_time DESC");
$sort->append("desc", "Tittel", "ft_title DESC, ft_time DESC");
$sort->append("asc", "Dato", "ft_time");
$sort->append("desc", "Dato", "ft_time DESC");
$sort->append("asc", "Antall svar", "ft_replies, ft_time DESC");
$sort->append("desc", "Antall svar", "ft_replies DESC, ft_time DESC");
$sort->append("asc", "Antall visninger", "ft_views");
$sort->append("desc", "Antall visninger", "ft_views DESC");
$sort->append("asc", "Siste innlegg", "IFNULL(ft_last_reply, ft_time)");
$sort->append("desc", "Siste innlegg", "IFNULL(ft_last_reply, ft_time) DESC");
$sort->set_active(requestval("sort"), 3);
// søkeform
echo '
<div class="bg1_c small">
	<h1 class="bg1">Søk i forum<span class="left"></span><span class="right"></span></h1>
Exemplo n.º 4
0
        } else {
            $_base->page->add_message('Ugyldig spillernavn: <b>' . htmlspecialchars($name) . '</b>.', "error");
        }
    }
    if (count($search_from[4][2]) == 0) {
        $search_from_id = 1;
    } elseif (count($search_from[4][2]) == 1) {
        $search_from[4][1] = " AND up.up_name = " . \Kofradia\DB::quote($search_from[4][2][0]);
    } else {
        $search_from[4][1] = " AND up.up_name IN (" . implode(",", array_map(array($_base->db, "quote"), $search_from[4][2])) . ")";
    }
}
//$title = ucwords($search_where[$search_where_id][0]);
$_base->page->add_title("Meldinger", "Søk");
// sortering
$sort = new sorts("sort");
$sort->append("asc", "Avsender", "up_name, im_time DESC");
$sort->append("desc", "Avsender", "up_name DESC, im_time DESC");
$sort->append("asc", "Emne", "it_title, im_time DESC");
$sort->append("desc", "Emne", "it_title DESC, im_time DESC");
$sort->append("asc", "Innhold", "id_text");
$sort->append("desc", "Innhold", "id_text DESC");
$sort->append("asc", "Dato", "im_time");
$sort->append("desc", "Dato", "im_time DESC");
$sort->set_active(postval("sort"), 7);
// søkeform
echo '
<h1>Søk - Meldinger</h1>
<p class="h_right"><a href="' . htmlspecialchars(game::address("innboks", $_GET)) . '">Tilbake</a></p>
<form action="' . htmlspecialchars(game::address(PHP_SELF, $_GET, array("alle", "innboks", "utboks", "side"))) . '" method="post">
	<div class="section" style="width: 410px; margin-left: auto; margin-right: auto">
Exemplo n.º 5
0
    /**
     * Vis fengsel
     */
    protected function show()
    {
        // er vi i fengsel nå?
        if ($wait = $this->up->fengsel_wait()) {
            ess::$b->page->add_js_domready('$("fengsel_dusor").focus();');
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Du er i fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<p>Du befinner deg for øyeblikket i fengsel og slipper ut om ' . game::counter($wait, true) . '.</p>' . (!$this->up->is_nostat() ? '
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="expire" value="' . $this->up->data['up_fengsel_time'] . '" />
			<dl class="dd_right">
				<dt>Dusør for å bryte deg ut</dt>
				<dd><input type="text" class="styled w80" name="amount" id="fengsel_dusor" value="' . game::format_cash($this->up->data['up_fengsel_dusor']) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton($this->up->data['up_fengsel_dusor'] > 0 ? "Endre dusør" : "Sett dusør", 'name="dusor"') . '</p>
			<p class="c">Spilleren som bryter ut mottar kun ' . self::DUSOR_PROFIT * 100 . ' % av dusøren.</p>
		</form>' : '') . '
	</div>
</div>';
        }
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Spiller", "up_name");
        $sort->append("desc", "Spiller", "up_name DESC");
        $sort->append("asc", "Wanted nivå", "up_wanted_level, up_fengsel_time DESC");
        $sort->append("desc", "Wanted nivå", "up_wanted_level DESC, up_fengsel_time DESC");
        $sort->append("asc", "Tid igjen", "up_fengsel_time");
        $sort->append("desc", "Tid igjen", "up_fengsel_time DESC");
        $sort->set_active(requestval("sort"), 5);
        // hent folk i fengsel
        $sort_info = $sort->active();
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
        $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_fengsel_time, up_fengsel_num, up_fengsel_dusor, ROUND(up_fengsel_dusor * " . self::DUSOR_PROFIT . ") up_fengsel_dusor_get, up_wanted_level\n\t\t\tFROM users_players\n\t\t\tWHERE up_fengsel_time > " . time() . " AND up_access_level != 0\n\t\t\tORDER BY {$sort_info['params']}");
        $num = $result->rowCount();
        echo '
<div class="bg1_c ' . ($num == 0 ? 'xsmall' : 'xlarge') . '">
	<h1 class="bg1">Fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<form action="" method="post">
			<p class="c dark">Ditt wanted nivå er på ' . game::format_number($this->up->data['up_wanted_level'] / 10, 1) . ' %.</p>';
        if ($num == 0) {
            echo '
			<p class="c dark">Ingen er i fengselet for øyeblikket.</p>
			<p class="c"><a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a></p>';
        } else {
            echo '
			<table class="table center" width="100%">
				<thead>
					<tr>
						<th>Spiller ' . $sort->show_link(0, 1) . '</th>
						<th>Wanted<br />nivå ' . $sort->show_link(2, 3) . '</th>
						<th>Utbrytning<br />sannsynlighet</th>
						<th>Ca. poeng</th>
						<th>Dusør</th>
						<th>Tid igjen ' . $sort->show_link(4, 5) . '</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $prefix = "";
                $attr = new attr("class");
                if (++$i % 2 == 0) {
                    $attr->add("color");
                }
                if (!$this->up->fengsel_check()) {
                    $attr->add("box_handle");
                    $prefix = '<input type="radio" name="up_id" value="' . $row['up_id'] . '_' . $row['up_fengsel_time'] . '_' . $row['up_fengsel_dusor'] . '" /> ';
                }
                $time = $row['up_fengsel_time'] - time();
                $prob = self::calc_prob($time, $row['up_wanted_level'] / 10);
                $points = self::calc_points($prob);
                echo '
					<tr' . $attr->build() . '>
						<td>' . $prefix . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td class="c">' . game::format_number($row['up_wanted_level'] / 10, 1) . ' %</td>
						<td class="c">' . game::format_number($prob, 1) . ' %</td>
						<td class="c">' . game::format_num($points) . '</td>
						<td class="r nowrap">' . game::format_cash($row['up_fengsel_dusor_get']) . '</td>
						<td class="r">' . game::counter($time) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . (($wait = $this->up->fengsel_wait()) == 0 ? '
				' . show_sbutton("Bryt ut", 'name="brytut"') : '
				Du er i fengsel og slipper ut om ' . game::counter($wait, true) . '.
			</p>
			<p class="c">') . '
				<a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a>
			</p>';
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
			<div class="hr"></div>
			<p class="c">
				' . $pagei->pagenumbers() . '
			</p>';
            }
        }
        echo '
		</form>
	</div>
</div>';
        // testing
        if (!MAIN_SERVER || access::is_nostat() && access::has("mod")) {
            echo '
<div class="bg1_c xxsmall bg1_padding">
	<h1 class="bg1">' . (MAIN_SERVER ? 'No-stat' : 'Testing') . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<form action="" method="post">' . ($this->up->fengsel_check() ? '
			<p class="c">' . show_sbutton("Gå ut av fengsel", 'name="remove"') . '</p>' : '
			<dl class="dd_right dl_2x">
				<dt>Tid</dt>
				<dd><input type="text" name="time" value="' . htmlspecialchars(postval("time", 20)) . '" class="styled w40" /> sekunder</dd>
			</dl>
			<p class="c">' . show_sbutton("Gå inn i fensgel") . '</p>') . '
		</form>
	</div>
</div>';
        }
    }
Exemplo n.º 6
0
    /**
     * Vervede spillere
     */
    protected static function page_vervede()
    {
        global $__server;
        ess::$b->page->add_title("Vervede spillere");
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Spillernavn", "rec.up_name");
        $sort->append("desc", "Spillernavn", "rec.up_name DESC");
        $sort->append("asc", "Sist pålogget", "rec.up_last_online");
        $sort->append("desc", "Sist pålogget", "rec.up_last_online DESC");
        $sort->append("asc", "Registrert", "rec.up_created_time");
        $sort->append("desc", "Registrert", "rec.up_created_time DESC");
        $sort->append("asc", "Rankbonus", "u2.u_recruiter_points_bonus");
        $sort->append("desc", "Rankbonus", "u2.u_recruiter_points_bonus DESC");
        $sort->set_active(requestval("sort"), 5);
        // hent spillerene vi har vervet
        $sort_info = $sort->active();
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50);
        $result = $pagei->query("\n\t\t\tSELECT rec.up_id, rec.up_name, rec.up_access_level, rec.up_last_online, rec.up_created_time, u2.u_recruiter_points_bonus\n\t\t\tFROM\n\t\t\t\tusers_players rec,\n\t\t\t\tusers_players self,\n\t\t\t\tusers u1,\n\t\t\t\tusers u2\n\t\t\tWHERE u1.u_id = " . page_min_side::$active_user->id . " AND self.up_u_id = u1.u_id AND self.up_id = rec.up_recruiter_up_id AND u2.u_id = rec.up_u_id\n\t\t\tORDER BY {$sort_info['params']}");
        echo '
	<div class="bg1_c xmedium">
		<h1 class="bg1">Vervede spillere<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<ol>
				<li>Du gir ut denne linken til en du ønsker å verve: <a href="' . $__server['path'] . '/' . page_min_side::$active_player->id . '" target="_blank">' . $__server['path'] . '/' . page_min_side::$active_player->id . '</a></li>
				<li>Personen åpner linken</li>
				<li>Når personen registrerer seg vil brukeren være vervet av deg</li>
			</ol>
			<p class="c"><a href="' . ess::$s['relative_path'] . '/node/60">Mer informasjon om verving &raquo;</a></p>';
        if ($pagei->total == 0) {
            echo '
			<p class="c">Du har ikke vervet noen spillere.</p>';
        } else {
            echo '
			<p>Du har vervet ' . $pagei->total . ' spiller' . ($pagei->total == 1 ? '' : 'e') . ':</p>
			<table class="table spacerfix center' . ($pagei->pages == 1 ? ' tablemb' : '') . '">
				<thead>
					<tr>
						<td>Spiller <nobr>' . $sort->show_link(0, 1) . '</nobr></td>
						<td>Sist pålogget <nobr>' . $sort->show_link(2, 3) . '</nobr></td>
						<td>Tid vervet <nobr>' . $sort->show_link(4, 5) . '</nobr></td>
						<td>Rankbonus <nobr>' . $sort->show_link(6, 7) . '</nobr></td>
					</tr>
				</thead>
				<tbody>';
            $color = true;
            while ($row = $result->fetch()) {
                echo '
					<tr' . ($color = !$color ? ' class="color"' : '') . '>
						<td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td>
						<td class="r">' . ess::$b->date->get($row['up_created_time'])->format() . '</td>
						<td class="r">' . game::format_number($row['u_recruiter_points_bonus']) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>' . ($pagei->pages > 1 ? '
			<p class="c">' . $pagei->pagenumbers() . '</p>' : '');
        }
        echo '
		</div>
	</div>';
    }
Exemplo n.º 7
0
            $search_ranks_active[] = $match[1];
            $search_ranks_query[] = $search_ranks[$match[1]][1];
        }
    }
}
if (count($search_ranks_query) > 0 && count($search_ranks_query) != count($search_ranks)) {
    $search_ranks_query = " AND (" . implode(" OR ", $search_ranks_query) . ")";
    $more = true;
} else {
    if (count($search_ranks_active) == 0) {
        $search_ranks_active = array_keys($search_ranks);
    }
    $search_ranks_query = "";
}
// sortering
$sort = new sorts("sort");
$sort->append("asc", "Spiller", "up_name, up_last_online DESC");
$sort->append("desc", "Spiller", "up_name DESC, up_last_online");
$sort->append("asc", "Lengde på spiller", "LENGTH(up_name), up_name, up_last_online DESC");
$sort->append("desc", "Lengde på spiller", "LENGTH(up_name) DESC, up_name DESC, up_last_online");
$sort->append("asc", "Sist pålogget", "up_last_online");
$sort->append("desc", "Sist pålogget", "up_last_online DESC");
$sort->append("asc", "Plassering", "up_points DESC");
$sort->append("desc", "Plassering", "up_points");
$sort->set_active(requestval("sort"), 2);
$_base->page->add_js('
function expandForm()
{
	$("more_false").style.display = "none";
	$("more_true1").style.display = "inline";
	$("more_true2").style.display = "block";
Exemplo n.º 8
0
require "../../base.php";
global $_base;
access::need("mod");
$_base->page->theme_file = "doc";
if (!isset($_GET['ip'])) {
    redirect::handle("finn");
}
$ip = $_GET['ip'];
echo '
<h1>Økter på IP</h1>
<p class="h_right"><a href="finn?ip=' . urlencode($ip) . '">Tilbake</a></p>
<p><span class="dark">IP-adresse:</span> ' . htmlspecialchars($ip) . '</p>
<p>IP-adressen kan inneholde ? og * for å søke etter ukjente siffer.</p>';
// sortering
$sort = new sorts("sort");
$sort->append("asc", "Økt ID", "ses_id");
$sort->append("desc", "Økt ID", "ses_sid DESC");
$sort->append("asc", "Bruker ID", "ses_u_id");
$sort->append("desc", "Bruker ID", "ses_u_id DESC");
$sort->append("asc", "IP-adresse", "ses_last_ip");
$sort->append("desc", "IP-adresse", "ses_last_ip DESC");
#$sort->append("asc", "Brukernavn", "user");	$sort->append("desc", "Brukernavn", "user DESC");
$sort->append("asc", "Opprettet", "ses_created_time");
$sort->append("desc", "Opprettet", "ses_created_time DESC");
$sort->append("asc", "Sist aktiv", "ses_last_time");
$sort->append("desc", "Sist aktiv", "ses_last_time DESC");
$sort->append("asc", "Hits", "ses_hits");
$sort->append("desc", "Hits", "ses_hits DESC");
$sort->append("asc", "Rank", "ses_points");
$sort->append("desc", "Rank", "ses_points DESC");
Exemplo n.º 9
0
    /** Søkefunksjon */
    public static function action_search()
    {
        access::need("crewet");
        ess::$b->page->add_title("Søk");
        // hvem som skal ha kunnet skrevet det man søker på
        $search_from = array(1 => array("Alle", ""), array("Meg selv", " AND sum_up_id = up_ref.up_id"), array("Andre", " AND sum_up_id != up_ref.up_id"), array('Spesifiser', NULL, array()));
        $id = requestval("f");
        $search_from_id = isset($search_from[$id]) ? $id : 1;
        // sjekk etter spillere?
        if ($search_from_id == 4) {
            $name = trim(postval("up"));
            // sett opp brukernavnene
            $names = explode(",", $name);
            foreach ($names as $name) {
                $name = trim($name);
                if (empty($name)) {
                    continue;
                }
                if (preg_match('/^[0-9a-zA-Z\\-_ ]+$/Du', $name)) {
                    $search_from[4][2][] = $name;
                } else {
                    ess::$b->page->add_message('Ugyldig spillernavn: <b>' . htmlspecialchars($name) . '</b>.', "error");
                }
            }
            if (count($search_from[4][2]) == 0) {
                $search_from_id = 1;
            } else {
                $search_from[4][1] = " AND up_sum.up_name IN (" . implode(",", array_map(array(ess::$b->db, "quote"), $search_from[4][2])) . ")";
            }
        }
        // søke kun blant den som sendte inn henvendelsen eller de som svarte?
        // MERK: tar ikke høyde for at brukere skifter spiller
        $search_by = array(1 => array("Alle", ""), array("Innsender", " AND sum_up_id = su_up_id"), array("Crewet", " AND sum_up_id != su_up_id"));
        $id = requestval("fb");
        $search_by_id = isset($search_by[$id]) ? $id : 1;
        // kategorier
        $search_kat = array();
        foreach (self::$kategorier as $info) {
            $search_kat[$info['id']] = array($info['name'], "su_category = {$info['id']}");
        }
        $search_kat_active = array();
        $search_kat_query = array();
        foreach ($_REQUEST as $key => $dummy) {
            $match = false;
            if (preg_match("/^k(\\d+)\$/Du", $key, $match)) {
                if (isset($search_kat[$match[1]])) {
                    $search_kat_active[] = $match[1];
                    $search_kat_query[] = $search_kat[$match[1]][1];
                }
            }
        }
        if (count($search_kat_query) > 0 && count($search_kat_query) != count($search_kat)) {
            $search_kat_query = " AND (" . implode(" OR ", $search_kat_query) . ")";
            $more = true;
        } else {
            if (count($search_kat_active) == 0) {
                $search_kat_active = array_keys($search_kat);
            }
            $search_kat_query = "";
        }
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Avsender", "up_name, sum_time DESC");
        $sort->append("desc", "Avsender", "up_name DESC, sum_time DESC");
        $sort->append("asc", "Tittel", "su_title, sum_time DESC");
        $sort->append("desc", "Tittel", "su_title DESC, sum_time DESC");
        #$sort->append("asc", "Innhold", "id_text");
        #$sort->append("desc", "Innhold", "id_text DESC");
        $sort->append("asc", "Tid", "sum_time");
        $sort->append("desc", "Tid", "sum_time DESC");
        $sort->set_active(postval("sort"), 5);
        // søkeskjema
        echo '
<h1>Søk i support</h1>
<p class="h_right"><a href="./">Tilbake</a></p>
<form action="" method="post">
	<div class="section" style="width: 410px; margin-left: auto; margin-right: auto">
		<h2>Søk</h2>
		<dl class="dl_20 dl_2x">
			<dt>Tittel</dt>
			<dd><input type="text" name="title" value="' . htmlspecialchars(postval("title")) . '" class="styled w150" /></dd>
			
			<dt>Innhold</dt>
			<dd><input type="text" name="text" value="' . htmlspecialchars(postval("text")) . '" class="styled w300" /></dd>
			
			<dt>Av?</dt>
			<dd>';
        $i = 0;
        foreach ($search_from as $key => $item) {
            if (++$i == count($search_from)) {
                break;
            }
            echo '
				<input type="radio" id="f_' . $key . '" name="f" value="' . $key . '"' . ($search_from_id == $key ? ' checked="checked"' : '') . ' /><label for="f_' . $key . '"> ' . htmlspecialchars($item[0]) . '</label>';
        }
        echo '
			</dd>
			
			<dt>&nbsp;</dt>
			<dd><input type="radio" id="f_' . $key . '" name="f" value="' . $key . '"' . ($search_from_id == $key ? ' checked="checked"' : '') . ' onclick="$(\'u_name\').focus()" /><label for="f_' . $key . '"> Spesifiser: </label><input type="text" name="up" value="' . htmlspecialchars(postval("up")) . '" class="styled w100" id="u_name" onfocus="$(\'f_' . $key . '\').checked=true" /></dd>
			
			<dt>Hvilke meldinger?</dt>
			<dd>';
        foreach ($search_by as $key => $item) {
            echo '
				<input type="radio" id="fb_' . $key . '" name="fb" value="' . $key . '"' . ($search_by_id == $key ? ' checked="checked"' : '') . ' /><label for="fb_' . $key . '"> ' . htmlspecialchars($item[0]) . '</label>';
        }
        echo '
			</dd>
			
			<dt>Kategorier</dt>
			<dd>';
        $i = 0;
        foreach ($search_kat as $key => $item) {
            if ($i++ > 0) {
                echo '<br />';
            }
            echo '
					<input type="checkbox" id="kat?' . $key . '" name="k' . $key . '" value="1"' . (in_array($key, $search_kat_active) ? ' checked="checked"' : '') . ' /><label for="kat_' . $key . '"> ' . htmlspecialchars($item[0]) . '</label>';
        }
        echo '
			</dd>
		</dl>
		<h3 class="c">
			' . show_sbutton("Utfør søk", 'name="search"') . '
		</h3>
	</div>
</form>';
        // søke?
        if (isset($_POST['search'])) {
            $title_search = postval("title");
            $text_search = postval("text");
            // finn ut delene av spørringen
            $title_parts = search_query($title_search);
            $text_parts = search_query($text_search);
            if (count($title_parts[0]) == 0 && count($text_parts[0]) == 0 && $search_from_id != 4 && $search_kat_query == "") {
                echo '
<h2>Søkeresultater</h2>
<p>Ingen søkekriterier.</p>';
            } else {
                // sett opp søkespørringen
                $search = "";
                if (count($title_parts[0]) > 0) {
                    $search .= " AND su_title" . implode(" AND su_title", $title_parts[0]);
                }
                if (count($text_parts[0]) > 0) {
                    $search .= " AND sum_text" . implode(" AND sum_text", $text_parts[0]);
                }
                // sortering
                $sort_info = $sort->active();
                // sidetall - hent henvendelsene på denne siden
                $pagei = new pagei(pagei::ACTIVE_POST, "side", pagei::PER_PAGE, 50);
                $result = $pagei->query("\n\t\t\t\t\tSELECT su_id, su_up_id, su_category, su_title, su_time, su_solved, sum_id, sum_up_id, sum_time, sum_text, up_sum.up_name, up_sum.up_access_level\n\t\t\t\t\tFROM support\n\t\t\t\t\t\tJOIN support_messages ON sum_su_id = su_id\n\t\t\t\t\t\tJOIN users_players up_sum ON up_sum.up_id = sum_up_id,\n\t\t\t\t\t\tusers_players up_ref\n\t\t\t\t\tWHERE up_ref.up_u_id = " . login::$user->id . "{$search_from[$search_from_id][1]}{$search_by[$search_by_id][1]}{$search_kat_query}{$search}\n\t\t\t\t\tGROUP BY sum_id" . (count($text_parts[0]) == 0 && $search_from_id == 1 ? ", su_id" : "") . "\n\t\t\t\t\tORDER BY {$sort_info['params']}", array_merge($title_parts[2], $text_parts[2]));
                $info = array();
                foreach ($title_parts[1] as $part) {
                    $info[] = '<b>Tittel:</b> ' . htmlspecialchars($part);
                }
                foreach ($text_parts[1] as $part) {
                    $info[] = '<b>Innhold:</b> ' . htmlspecialchars($part);
                }
                if ($search_from_id == 4) {
                    if (count($search_from[4][2]) == 1) {
                        $info[] = '<b>Spiller:</b> <user="******" />';
                    } else {
                        $u = array();
                        foreach ($search_from[4][2] as $name) {
                            $u[] = '<user="******" />';
                        }
                        $info[] = '<b>Spiller:</b> ' . implode(" eller ", $u);
                    }
                }
                $info = implode(" ", $info);
                echo '
<h2>Søkeresultater</h2>
<p>Søkekriterier: ' . $info . '</p>';
                // fant vi noe?
                if ($pagei->total == 0) {
                    echo '
<p>Fant ingen treff.</p>';
                } else {
                    echo '
<p>Antall treff: <b>' . $pagei->total . '</b></p>
<form action="" method="post">';
                    foreach ($_POST as $key => $value) {
                        if ($key == "side" || $key == "sort") {
                            continue;
                        }
                        echo '
	<input type="hidden" name="' . htmlspecialchars($key) . '" value="' . htmlspecialchars($value) . '" />';
                    }
                    echo '
	<input type="hidden" name="sort" id="sort_sort" value="' . $sort->active . '" />
	<table class="table' . ($pagei->pages == 1 ? ' tablemb' : '') . '" width="100%">
		<thead>
			<tr>
				<th><span class="tools_r">' . $sort->show_button(0, 1) . '</span> Spiller</th>
				<th><span class="tools_r">' . $sort->show_button(2, 3) . '</span> Henvendelse</th>
				<th><span class="tools_r">Tekst</th>
				<th><span class="tools_r">' . $sort->show_button(4, 5) . '</span> Tid</th>
			</tr>
		</thead>
		<tbody>';
                    ess::$b->page->add_css('
.su_not_solved { color: #FF0000; font-weight: bold }
.sum_up { white-space: nowrap; width: 100px }
.su_time { text-align: center; white-space: nowrap; color: #888888; width: 100px }');
                    $i = 0;
                    while ($row = $result->fetch()) {
                        $content = trim(strip_tags(game::bb_to_html($row['sum_text'])));
                        $length = mb_strlen($content);
                        $max = 60;
                        if (mb_strlen($content) > $max) {
                            $content = mb_substr($content, 0, $max - 4) . " ...";
                        }
                        echo '
			<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
				<td class="sum_up">' . game::profile_link($row['sum_up_id'], $row['up_name'], $row['up_access_level']) . '</td>
				<td><a href="./?a=show&amp;su_id=' . $row['su_id'] . '">' . htmlspecialchars($row['su_title']) . '</a>' . ($row['su_solved'] == 0 ? ' <span class="su_not_solved">(Uløst)</span>' : '') . '</td>
				<td class="dark">' . htmlspecialchars($content) . ' (' . $length . ' tegn)</td>
				<td class="su_time">' . ess::$b->date->get($row['sum_time'])->format() . '</td>
			</tr>';
                    }
                    echo '
		</tbody>
	</table>';
                    // flere sider?
                    if ($pagei->pages > 1) {
                        echo '
	<div class="hr"></div>
	<p class="c">
		' . $pagei->pagenumbers("input") . '
	</p>';
                    }
                    echo '
</form>';
                }
            }
        }
    }
Exemplo n.º 10
0
 function vote($aim_type, $aim_id, $user_id, $score)
 {
     if (!is_numeric($aim_id) || !$aim_id || !$user_id) {
         return;
     }
     //$aim_id;
     //$aim_type = self::AIM_TYPE_FEED;
     $score = $score > 0 ? 1 : -1;
     $this->init('votes');
     $votes = $this->get(compact('aim_id', 'aim_type', 'user_id'));
     $last_vote_type = $votes['vote_type'];
     $vote_id = $votes['vote_id'];
     $OPR = array();
     $this->begin();
     try {
         if ($aim_type == self::AIM_TYPE_FEED) {
             $this->init();
             //锁行
             $feed = $this->get($aim_id, true);
             $ups = $feed['ups'];
             $downs = $feed['downs'];
         } elseif ($aim_type == self::AIM_TYPE_COMMENT) {
             $this->init('comments');
             //锁行
             $comment = $this->get($aim_id, true);
             $ups = $comment['ups'];
             $downs = $comment['downs'];
         }
         if ($score > 0 && $last_vote_type != self::VOTE_TYPE_LIKE) {
             //改成喜欢
             $ups += 1;
             $OPR['ups[+]'] = 1;
             if ($last_vote_type == self::VOTE_TYPE_DISLIKE) {
                 $downs -= 1;
                 $OPR['downs[-]'] = 1;
             }
             $vote_type = self::VOTE_TYPE_LIKE;
         } elseif ($score < 0 && $last_vote_type != self::VOTE_TYPE_DISLIKE) {
             //改成不喜欢
             $downs += 1;
             $OPR['downs[+]'] = 1;
             if ($last_vote_type == self::VOTE_TYPE_LIKE) {
                 $ups -= 1;
                 $OPR['ups[+]'] = 1;
             }
             $vote_type = self::VOTE_TYPE_DISLIKE;
         } else {
             //改成未打过
             if ($last_vote_type == self::VOTE_TYPE_DISLIKE) {
                 $downs -= 1;
                 $OPR['downs[-]'] = 1;
             }
             if ($last_vote_type == self::VOTE_TYPE_LIKE) {
                 $ups -= 1;
                 $OPR['ups[-]'] = 1;
             }
             $vote_type = self::VOTE_TYPE_UNVOTE;
         }
         if ($aim_type == self::AIM_TYPE_FEED) {
             //为了方便计算和存储,省略两位小数,转为整形
             $hot_score = sorts::hot_score($ups, $downs, $feed['add_time']);
             $controversy_score = sorts::controversy($ups, $downs);
             $this->init();
             $this->update(compact('OPR', 'hot_score', 'controversy_score'), array('feed_id' => $aim_id));
             $this->user_vote_feed($user_id, 'refresh');
         } elseif ($aim_type == self::AIM_TYPE_COMMENT) {
             //为了方便计算和存储,省略两位小数,转为整形
             $hot_score = sorts::comment_hot_score($ups, $downs);
             $this->init('comments');
             $this->update(compact('OPR', 'hot_score'), array('comment_id' => $aim_id));
         }
         $this->init('votes');
         if ($last_vote_type != self::VOTE_TYPE_UNVOTE && $vote_type == self::VOTE_TYPE_UNVOTE) {
             $this->delete($vote_id);
         } else {
             $add_time = $_SERVER['REQUEST_TIME'];
             $this->edit(compact('vote_id', 'aim_id', 'aim_type', 'user_id', 'vote_type', 'add_time'));
         }
         $this->init();
         $this->commit();
         return true;
     } catch (Exception $e) {
         $this->message = '失败';
         $this->rollBack();
         return false;
     }
 }