mirror of
https://github.com/vichan-devel/vichan.git
synced 2024-11-29 01:34:31 +01:00
Merge branch 'master' of https://github.com/savetheinternet/Tinyboard
This commit is contained in:
commit
32eca7cfc9
@ -583,7 +583,7 @@
|
|||||||
// Use Font-Awesome for displaying lock and pin icons, instead of the images in static/.
|
// Use Font-Awesome for displaying lock and pin icons, instead of the images in static/.
|
||||||
// http://fortawesome.github.io/Font-Awesome/icon/pushpin/
|
// http://fortawesome.github.io/Font-Awesome/icon/pushpin/
|
||||||
// http://fortawesome.github.io/Font-Awesome/icon/lock/
|
// http://fortawesome.github.io/Font-Awesome/icon/lock/
|
||||||
$config['font_awesome'] = false;
|
$config['font_awesome'] = true;
|
||||||
$config['font_awesome_css'] = 'stylesheets/font-awesome/css/font-awesome.min.css';
|
$config['font_awesome_css'] = 'stylesheets/font-awesome/css/font-awesome.min.css';
|
||||||
|
|
||||||
// Boardlinks
|
// Boardlinks
|
||||||
@ -1062,6 +1062,8 @@
|
|||||||
$config['mod']['rebuild'] = ADMIN;
|
$config['mod']['rebuild'] = ADMIN;
|
||||||
// Search through posts, IP address notes and bans
|
// Search through posts, IP address notes and bans
|
||||||
$config['mod']['search'] = JANITOR;
|
$config['mod']['search'] = JANITOR;
|
||||||
|
// Allow searching posts (can be used with board configuration file to disallow searching through a certain board)
|
||||||
|
$config['mod']['search_posts'] = JANITOR;
|
||||||
// Read the moderator noticeboard
|
// Read the moderator noticeboard
|
||||||
$config['mod']['noticeboard'] = JANITOR;
|
$config['mod']['noticeboard'] = JANITOR;
|
||||||
// Post to the moderator noticeboard
|
// Post to the moderator noticeboard
|
||||||
|
@ -225,7 +225,7 @@ function mod_search($type, $search_query_escaped, $page_no = 1) {
|
|||||||
|
|
||||||
// Which `field` to search?
|
// Which `field` to search?
|
||||||
if ($type == 'posts')
|
if ($type == 'posts')
|
||||||
$sql_field = 'body';
|
$sql_field = 'body_nomarkup';
|
||||||
if ($type == 'IP_notes')
|
if ($type == 'IP_notes')
|
||||||
$sql_field = 'body';
|
$sql_field = 'body';
|
||||||
if ($type == 'bans')
|
if ($type == 'bans')
|
||||||
@ -246,7 +246,27 @@ function mod_search($type, $search_query_escaped, $page_no = 1) {
|
|||||||
// Compile SQL query
|
// Compile SQL query
|
||||||
|
|
||||||
if ($type == 'posts') {
|
if ($type == 'posts') {
|
||||||
error('Searching posts is under development. Sorry.');
|
$query = '';
|
||||||
|
|
||||||
|
$boards = listBoards();
|
||||||
|
if (empty($boards))
|
||||||
|
error(_('There are no boards to search!'));
|
||||||
|
|
||||||
|
foreach ($boards as $board) {
|
||||||
|
openBoard($board['uri']);
|
||||||
|
if (!hasPermission($config['mod']['search_posts'], $board['uri']))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!empty($query))
|
||||||
|
$query .= ' UNION ALL ';
|
||||||
|
$query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` WHERE %s", $board['uri'], $board['uri'], $sql_like);
|
||||||
|
}
|
||||||
|
|
||||||
|
// You weren't allowed to search any boards
|
||||||
|
if (empty($query))
|
||||||
|
error($config['error']['noaccess']);
|
||||||
|
|
||||||
|
$query .= ' ORDER BY `sticky` DESC, `id` DESC';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type == 'IP_notes') {
|
if ($type == 'IP_notes') {
|
||||||
@ -273,10 +293,15 @@ function mod_search($type, $search_query_escaped, $page_no = 1) {
|
|||||||
// Execute SQL query (with pages)
|
// Execute SQL query (with pages)
|
||||||
$q = query($query . ' LIMIT ' . (($page_no - 1) * $config['mod']['search_page']) . ', ' . $config['mod']['search_page']) or error(db_error());
|
$q = query($query . ' LIMIT ' . (($page_no - 1) * $config['mod']['search_page']) . ', ' . $config['mod']['search_page']) or error(db_error());
|
||||||
$results = $q->fetchAll(PDO::FETCH_ASSOC);
|
$results = $q->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
// Get total result count
|
// Get total result count
|
||||||
$q = query('SELECT COUNT(*) FROM `' . $sql_table . '` WHERE ' . $sql_like) or error(db_error());
|
if ($type == 'posts') {
|
||||||
$result_count = $q->fetchColumn();
|
$q = query("SELECT COUNT(*) FROM ($query) AS `tmp_table`") or error(db_error());
|
||||||
|
$result_count = $q->fetchColumn();
|
||||||
|
} else {
|
||||||
|
$q = query('SELECT COUNT(*) FROM `' . $sql_table . '` WHERE ' . $sql_like) or error(db_error());
|
||||||
|
$result_count = $q->fetchColumn();
|
||||||
|
}
|
||||||
|
|
||||||
if ($type == 'bans') {
|
if ($type == 'bans') {
|
||||||
foreach ($results as &$ban) {
|
foreach ($results as &$ban) {
|
||||||
@ -285,6 +310,12 @@ function mod_search($type, $search_query_escaped, $page_no = 1) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($type == 'posts') {
|
||||||
|
foreach ($results as &$post) {
|
||||||
|
$post['snippet'] = pm_snippet($post['body']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// $results now contains the search results
|
// $results now contains the search results
|
||||||
|
|
||||||
mod_page(_('Search results'), 'mod/search_results.html', array(
|
mod_page(_('Search results'), 'mod/search_results.html', array(
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<em>{% trans 'no subject' %}</em>
|
<em>{% trans 'no subject' %}</em>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<small class="unimportant">
|
<small class="unimportant">
|
||||||
— {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ notice.time|date(config.post_date) }}
|
— {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ post.time|date(config.post_date) }}
|
||||||
</small>
|
</small>
|
||||||
</h2>
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if search_type == 'bans' %}
|
{% if search_type == 'bans' %}
|
||||||
<table class="modlog" style="width:100%">
|
<table class="modlog" style="width:100%">
|
||||||
@ -125,7 +125,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if search_type == 'log' %}
|
{% if search_type == 'log' %}
|
||||||
<table class="modlog">
|
<table class="modlog">
|
||||||
@ -166,7 +166,98 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if search_type == 'posts' %}
|
||||||
|
<table class="modlog">
|
||||||
|
<tr>
|
||||||
|
<th>Time</th>
|
||||||
|
<th>Board</th>
|
||||||
|
<th>ID</th>
|
||||||
|
<th>Thread</th>
|
||||||
|
<th>IP</th>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Subject</th>
|
||||||
|
<th>File</th>
|
||||||
|
<th>Body (snippet)</th>
|
||||||
|
</tr>
|
||||||
|
{% for post in results %}
|
||||||
|
<tr>
|
||||||
|
<td class="minimal">
|
||||||
|
<small>{{ post.time | ago }} ago</small>
|
||||||
|
</td>
|
||||||
|
<td class="minimal">
|
||||||
|
<a href="?/{{ config.board_path|sprintf(post.board) }}{{ config.file_index }}">{{ config.board_abbreviation|sprintf(post.board) }}</a>
|
||||||
|
</td>
|
||||||
|
<td class="minimal">
|
||||||
|
{% if post.thread %}
|
||||||
|
{% set thread = post.thread %}
|
||||||
|
{% else %}
|
||||||
|
{% set thread = post.id %}
|
||||||
|
{% endif %}
|
||||||
|
<a href="{{ config.root ~ post.board ~ '/' ~ config.dir.res}}{{ config.file_page|sprintf(thread) }}#{{ post.id }}">
|
||||||
|
{{ post.id }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td class="minimal">
|
||||||
|
<small>
|
||||||
|
{% if post.thread %}
|
||||||
|
{{ post.thread }}
|
||||||
|
{% else %}
|
||||||
|
(OP)
|
||||||
|
{% endif %}
|
||||||
|
</small>
|
||||||
|
</td>
|
||||||
|
<td class="minimal">
|
||||||
|
{% if mod|hasPermission(config.mod.show_ip, post.board) %}
|
||||||
|
<a href="?/IP/{{ post.ip }}">
|
||||||
|
{{ post.ip }}
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<em>hidden</em>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td style="max-width:100px">
|
||||||
|
<small>
|
||||||
|
{% if post.email|length > 0 %}
|
||||||
|
{# start email #}
|
||||||
|
<a class="email" href="mailto:{{ post.email }}">
|
||||||
|
{% endif %}
|
||||||
|
{% set capcode = post.capcode|capcode %}
|
||||||
|
<span {% if capcode.name %}style="{{ capcode.name }}" {% endif %}class="name">{{ post.name }}</span>
|
||||||
|
{% if post.trip|length > 0 %}
|
||||||
|
<span {% if capcode.trip %}style="{{ capcode.trip }}" {% endif %}class="trip">{{ post.trip }}</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if post.email|length > 0 %}
|
||||||
|
{# end email #}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if capcode %}
|
||||||
|
{{ capcode.cap }}
|
||||||
|
{% endif %}
|
||||||
|
</small>
|
||||||
|
</td>
|
||||||
|
<td style="max-width:250px">
|
||||||
|
{% if post.subject %}
|
||||||
|
<small>{{ post.subject }}</small>
|
||||||
|
{% else %}
|
||||||
|
–
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td style="max-width:200px">
|
||||||
|
{% if post.file %}
|
||||||
|
<small>{{ post.file }} ({{ post.filesize | filesize }})</small>
|
||||||
|
{% else %}
|
||||||
|
–
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<small><em>{{ post.snippet }}</em></small>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if result_count > results|count %}
|
{% if result_count > results|count %}
|
||||||
<p class="unimportant" style="text-align:center;word-wrap:break-word">
|
<p class="unimportant" style="text-align:center;word-wrap:break-word">
|
||||||
|
Loading…
Reference in New Issue
Block a user