root/users.php

Revision 317, 4.6 kB (checked in by Nafania, 2 years ago)

Изменена функция pager немного, для удобного построения LIMIT запросов.
Мелкие фиксы.
Обновлен jquery до последней версии.
Фикс ошибки, вызывающей sql ошибку Duplicate entry 'n' for key 'PRIMARY' occured in sql query UPDATE forum_search_results SET search_id = n, search_time = t, search_array = WHERE session_id = 'x', для этого апдейт базы.

Line 
1 <?php</span>
2 <span class="code-lang">$root_path = './';
3 require ($root_path . 'include/config.php');
4
5 $userdata = session_pagestart($user_ip);
6 init_userprefs($userdata);
7 loggedinorreturn();
8
9 $search = request_var('username', '');
10 $class = request_var('class', '-');
11 $country = request_var('country', 0);
12 $letter = request_var('letter', '-');
13
14 $sql_query = $query = array();</span>
15 <span class="code-lang">
16 if ( $search ) {
17      $sql_query[] = 'u.name LIKE ' . "'" . $db->sql_escape('%' . $search . '%') . "'" ;
18     $query['search'] = $search;
19 }
20 $letter = substr($letter, 0, 1);</span>
21 <span class="code-lang">if ( $letter != '-' ) {
22     $sql_query[] = 'u.name LIKE \'' . $db->sql_escape($letter) . '%\'';
23     $query['letter'] = $letter;
24 }
25
26 if ( $class != '-' ) {
27     $class = (int) $class;
28     $sql_query[] = 'u.class = ' . ( $class - 2 );
29     $query['class'] = $class;
30 }
31
32 if ( $country ) {
33         $sql_query[] = 'u.country = ' . $country;
34         $query['country'] = $country;
35 }
36
37 $countries_select = '<option value="0">(' . $lang['country'] . ')</option>';
38 $sql = 'SELECT id, name FROM ' . COUNTRIES_TABLE . ' ORDER BY name';
39 $result = $db->sql_query($sql);</span>
40 <span class="code-lang">while ($row = $db->sql_fetchrow($result)) {
41     $countries_select .= '<option value="' . $row['id'] . '"' . ($country == $row['id'] ? ' selected="selected"' : '') . '>' . $row['name'] . '</option>';
42  }
43 $countries_select .= '</select>';
44
45 $class_select = '<option value="-"' . ( $class == '-' ? ' selected="selected"':'' ) . '>(' . $lang['class'] . ')</option>';
46 $i = 0;</span>
47 <span class="code-lang">while ($c = get_user_class_name($i)) {
48     $class_select .= '<option value="' . ( $i + 2 ) . '"' . ( ( $i + 2 )  == $class ? ' selected="selected"':'' ) . '>' . $c . '</option>';
49     ++$i;
50 }
51 $class_select .= '</select>';
52
53 $q = $q_letter = $sql_ext = '';
54
55 $letters = ( $letter == '-' ? '<b>' . $lang['all'] . '</b>' : '<a href="' . append_sid('users.php') . '"><b>' . $lang['all'] . '</b></a>');</span>
56 <span class="code-lang">
57 if ( sizeof($sql_query) ) {
58     $sql_ext = implode(' AND ', $sql_query );
59 }
60 if ( sizeof($query) ) {
61     foreach ( $query AS $key => $value ) {
62         $q .= ( $q ? '&amp;' : '');
63         $q .= $key . '=' . $value;
64
65         if ( $key <> 'letter' ) {
66             $q_letter .= ( $q_letter ? '&amp;' : '');
67             $q_letter .= $key . '=' . $value;
68         }
69     }
70 }
71
72 for ($i = 48; $i < 58; ++$i) {
73         $L = chr($i);
74         $letters .= ($L == $letter ?' <b>' . $L . '</b>':' <a href="' . append_sid('users.php?letter=' . $L . ( !empty($q_letter) ? '&amp;' . $q_letter : '' ) ) . '"><b> ' . $L . '</b></a>');
75 }
76
77 for ($i = 65; $i < 91; ++$i) {
78         $L = chr($i);
79         $letters .= ($L == $letter ?' <b>' . $L . '</b>':' <a href="' . append_sid('users.php?letter=' . $L . ( !empty($q_letter) ? '&amp;' . $q_letter : '' ) ) . '"><b> ' . $L . '</b></a>');
80 }
81
82 $sql = 'SELECT COUNT(*) AS count FROM ' . USERS_TABLE . ' u WHERE status = 1 AND uid <> ' . ANONYMOUS .  ( $sql_ext ? ' AND ' . $sql_ext : '' );
83 $result = $db->sql_query($sql);
84 $count = ( $row = $db->sql_fetchrow($result) ) ? intval($row['count']) : 0 ;</span>
85 <span class="code-lang">list($pagertop, $pagerbottom, $offset, $limit) = pager(100, $count, 'users.php?' . ( !empty($q) ? '&amp;' . $q . '&amp;' : '' ));
86
87 $sql = 'SELECT u.uid, u.name, u.class, u.enabled, u.donor, u.warneduntil, u.parked, u.country, u.added, u.user_session_time, c.flagpic, c.name AS country_name</span>
88 <span class="code-lang">        FROM ' . USERS_TABLE . ' u, ' . COUNTRIES_TABLE . ' c
89         WHERE u.country = c.id' .  ( $sql_ext ? ' AND ' . $sql_ext : '' ) . ' AND status = 1
90         ORDER BY u.name ASC';
91 $result = $db->sql_query_limit($sql, $limit, $offset);
92
93 $template->assign_vars(array(</span>
94 <span class="code-lang">        'S_FORM_ACTION' => append_sid('users.php'),
95         'USERNAME' => $search,
96         'LETTERS' => $letters,
97         'COUNTRIES_SELECT' => $countries_select,
98         'CLASS_SELECT' => $class_select,
99         'PAGERTOP' => $pagertop,
100         'PAGERBOTTOM' => $pagerbottom)
101 );
102
103 while ($row = $db->sql_fetchrow($result)) {
104     $date_added = create_date($row['added']);
105     $last_access = create_date($row['user_session_time']);
106
107     // www.phpBB-SEO.com SEO TOOLKIT BEGIN
108     $seo->set_user_url($row['name'], $row['uid']);
109     // www.phpBB-SEO.com SEO TOOLKIT END
110
111     $template->assign_block_vars('users_row', array(
112             'U_USERDETAILS' => append_sid($root_path . 'userdetails.php?id=' . $row['uid']),
113             'USERNAME' => get_user_class_color ($row['class'], $row['name']),
114             'USER_ICONS' =>  get_user_icons($row),
115             'ADDED' => $date_added,
116             'LAST_ACCESS' => $last_access,
117             'CLASS' => get_user_class_name($row['class']),
118             'COUNTRY_NAME' => $row['country_name'],
119             'COUNTRY_FLAG' => $row['flagpic'] )
120     );
121 }
122
123 stdhead($lang['users']);
124 $template->set_filenames(array(</span>
125 <span class="code-lang">        'body' => 'users.html')
126 );
127 stdfoot();
128 ?>
Note: See TracBrowser for help on using the browser.