[ABD] Moderator Messages

Any abandoned MODs will be moved to this forum.

WARNING: MODs in this forum are not currently being supported or maintained by the original MOD author. Proceed at your own risk.
Forum rules
IMPORTANT: MOD Development Forum rules

WARNING: MODs in this forum are not currently being supported nor updated by the original MOD author. Proceed at your own risk.
Locked
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

Sorry for the third post :oops:.

The new version is released, enjoy 8-).
User avatar
Theriddler1
Registered User
Posts: 449
Joined: Sat Aug 27, 2011 11:00 pm
Location: NL
Name: Theriddler❶
Contact:

Re: [RC2] Moderator Messages

Post by Theriddler1 »

awesome :) here is my contribution for this mod.

dutch translation.

info_acp_mm.php

Code: Select all

<?php
//
//	file: language/nl/mods/info_acp_mm.php
//	authors: abdev, pastisd
//	begin: 12/18/2011
//	version: 0.0.5 - 08/15/2012
//	licence: http://opensource.org/licenses/gpl-license.php GNU Public License
//

// ignore
if ( !defined('IN_PHPBB') )
{
	exit;
}

// init lang ary, if it doesn't !
if ( empty($lang) || !is_array($lang) )
{
	$lang = array();
}

// administration
$lang = array_merge($lang, array(
	'MM' => 'Moderatie Berichten',

	'POST_MODERATION_USERNAME_CHANGE' => 'Vervang de gebruikersnaam van de auteur van het moderatie bericht wanneer deze gewijzigd word',
));

// umil
$lang = array_merge($lang, array(
	'INSTALL_MM' => 'Installeer Moderatie Berichten',
	'INSTALL_MM_CONFIRM' => 'Ben je er klaar voor om de Moderatie Berichten Mod te installeren ?',
	'UPDATE_MM' => 'Update Moderatie Berichten Mod',
	'UPDATE_MM_CONFIRM' => 'Ben je er klaar voor om de Moderatie Berichten Mod te updaten ?',
	'UNINSTALL_MM' => 'Deïnstalleer Moderatie Berichten Mod',
	'UNINSTALL_MM_CONFIRM' => 'Weet je zeker dat je Moderatie Berichten Mod wilt deïnstalleren ? Alle instellingen en data bewaard door deze mod zullen worden verwijderd !',
));
mm.php

Code: Select all

<?php
//
//	file: language/nl/mods/mm.php
//	authors: abdev, pastisd
//	begin: 08/14/2012
//	version: 0.0.4 - 08/16/2012
//	licence: http://opensource.org/licenses/gpl-license.php GNU Public License
//

// ignore
if ( !defined('IN_PHPBB') )
{
	exit;
}

// init lang ary, if it doesn't !
if ( empty($lang) || !is_array($lang) )
{
	$lang = array();
}

// posting
$lang = array_merge($lang, array(
	'POST_MODERATION_INVITE' => 'Je kunt hier je moderatie bericht schrijven …',
));

// viewtopic, search ...
$lang = array_merge($lang, array(
	'POST_MODERATION' => 'Moderatie bericht',
	'POST_MODERATION_AUTHOR' => 'Moderatie bericht door',
	'POST_MODERATION_REMOVE' => 'Verwijder het bericht',

	'POST_MODERATION_DELETING' => 'Verwijder het moderatie bericht',
	'POST_MODERATION_DELETED' => 'Het bericht is verwijderd.',
	'RETURN_POST' => '%sTerug naar laatst bezocht bericht%s',

	'CANNOT_DELETE_POST_MODERATION' => 'Je kan geen moderatie berichten verwijderen in dit forum.',
));

// viewforum
$lang = array_merge($lang, array(
	'POST_MODERATION_HERE' => 'Er is %d moderatie bericht',
	'POSTS_MODERATION_HERE' => 'Er zijn %d moderatie berichten',
));

// issues
$lang = array_merge($lang, array(
	'ISSUE_VAR_MISSING' => 'Het ziet er naar uit dat de installatie niet geheel compleet was. start deze alstublieft opnieuw <a href="%s">installation file</a> !',
	'ISSUE_INSTALL_MISSING' => 'Het lijkt erop dat er installatie bestanden missen. kijk alstublieft uw bestanden na !',
));
permissions_mm.php

Code: Select all

<?php
//
//	file: language/nl/mods/permissions_mm.php
//	authors: abdev, pastisd
//	begin: 08/15/2012
//	version: 0.0.1 - 08/15/2012
//	licence: http://opensource.org/licenses/gpl-license.php GNU Public License
//

// ignore
if ( !defined('IN_PHPBB') )
{
	exit;
}

// init lang ary, if it doesn't !
if ( empty($lang) || !is_array($lang) )
{
	$lang = array();
}

// permissions
$lang['permission_cat']['mm'] = 'Moderatie berichten';
$lang = array_merge($lang, array(
	'acl_m_mm_post' => array('lang' => 'Kan nieuwe moderatie berichten starten', 'cat' => 'mm'),
	'acl_m_mm_read' => array('lang' => 'kan moderatie berichten lezen', 'cat' => 'mm'),
//	'acl_m_mm_edit' => array('lang' => 'kan moderatie berichten wijzigen<br /><em>Deze optie zal beschikbaar komen in de volgende versie.</em>', 'cat' => 'mm'),
	'acl_m_mm_delete' => array('lang' => 'Kan moderatie berichten verwijderen', 'cat' => 'mm'),
));
Last edited by Theriddler1 on Wed Aug 22, 2012 8:25 am, edited 2 times in total.
Theriddler - Former Moderator @ phpBB.nl | phpBBservice.nl Team-member
Image My Extensions | buy me a beer Image
emsik
Registered User
Posts: 102
Joined: Wed Jul 01, 2009 12:55 pm

Re: [RC2] Moderator Messages

Post by emsik »

Hi,
I'm trying to install RC2 version, but after running db_update script it stops on Install Moderator Mesages.
Image

I havent installed previous version.

seems to be ok now:
Image

but why it takes so much time? The installation time of this mod should take ~10 minutes but the time of executing script was much more longer...
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

@Theriddler1 : Thanks for your translation, it will be added soon ;).

@emsik : Did you try to uninstall and reinstall the db_update.php file ?
User avatar
Jessica
Former Team Member
Posts: 4342
Joined: Sun Jul 18, 2010 2:53 pm
Location: Pennsylvania, USA
Name: Jessica
Contact:

Re: [RC2] Moderator Messages

Post by Jessica »

okay, I got everything updated okay. there's just one tiny little problem.

in my test forum on my site, I have one topic with 2 moderation messages. but the icon that shows that a topic have moderation messages is on the wrong topic.

I'm not sure why, but this also happened with Quick Title Edition - the prefix was on the wrong topic. I managed to fix THAT. but I forgot how I did it...

so, I need help with this...

my viewforum.php

Code: Select all

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session
$user->session_begin();
$auth->acl($user->data);

//-- mod : moderator messages --------------------------------------------------
//-- add
$user->setup('mods/mm');
//-- fin mod : moderator messages ----------------------------------------------
// Start initial var setup
$forum_id	= request_var('f', 0);
$mark_read	= request_var('mark', '');
$start		= request_var('start', 0);

$default_sort_days	= (!empty($user->data['user_topic_show_days'])) ? $user->data['user_topic_show_days'] : 0;
$default_sort_key	= (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't';
$default_sort_dir	= (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd';

$sort_days	= request_var('st', $default_sort_days);
$sort_key	= request_var('sk', $default_sort_key);
$sort_dir	= request_var('sd', $default_sort_dir);

// Check if the user has actually sent a forum ID with his/her request
// If not give them a nice error page.
if (!$forum_id)
{
	trigger_error('NO_FORUM');
}

$sql_from = FORUMS_TABLE . ' f';
$lastread_select = '';

// Grab appropriate forum data
if ($config['load_db_lastread'] && $user->data['is_registered'])
{
	$sql_from .= ' LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (ft.user_id = ' . $user->data['user_id'] . '
		AND ft.forum_id = f.forum_id)';
	$lastread_select .= ', ft.mark_time';
}

if ($user->data['is_registered'])
{
	$sql_from .= ' LEFT JOIN ' . FORUMS_WATCH_TABLE . ' fw ON (fw.forum_id = f.forum_id AND fw.user_id = ' . $user->data['user_id'] . ')';
	$lastread_select .= ', fw.notify_status';
}

$sql = "SELECT f.* $lastread_select
	FROM $sql_from
	WHERE f.forum_id = $forum_id";
$result = $db->sql_query($sql);
$forum_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$forum_data)
{
	trigger_error('NO_FORUM');
}


// Configure style, language, etc.
$user->setup('viewforum', $forum_data['forum_style']);
// Begin cBB Quick Mod
include($phpbb_root_path . 'quickmod/quickmod.' . $phpEx);
$quick_mod = new quickmod($forum_id);
// End cBB Quick Mod

// Redirect to login upon emailed notification links
if (isset($_GET['e']) && !$user->data['is_registered'])
{
	login_box('', $user->lang['LOGIN_NOTIFY_FORUM']);
}

// Permissions check
if (!$auth->acl_gets('f_list', 'f_read', $forum_id) || ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'] && !$auth->acl_get('f_read', $forum_id)))
{
	if ($user->data['user_id'] != ANONYMOUS)
	{
		trigger_error('SORRY_AUTH_READ');
	}

	login_box('', $user->lang['LOGIN_VIEWFORUM']);
}

// Forum is passworded ... check whether access has been granted to this
// user this session, if not show login box
if ($forum_data['forum_password'])
{
	login_forum_box($forum_data);
}

// Is this forum a link? ... User got here either because the
// number of clicks is being tracked or they guessed the id
if ($forum_data['forum_type'] == FORUM_LINK && $forum_data['forum_link'])
{
	// Does it have click tracking enabled?
	if ($forum_data['forum_flags'] & FORUM_FLAG_LINK_TRACK)
	{
		$sql = 'UPDATE ' . FORUMS_TABLE . '
			SET forum_posts = forum_posts + 1
			WHERE forum_id = ' . $forum_id;
		$db->sql_query($sql);
	}

	// We redirect to the url. The third parameter indicates that external redirects are allowed.
	redirect($forum_data['forum_link'], false, true);
	return;
}


// Start Breizh Shoutbox
if (isset($config['shout_version']))
{
	if ($config['shout_enable'] && $config['shout_forum'])
	{
		shout_display();
	}
}
// End Breizh Shoutbox --
// Build navigation links
generate_forum_nav($forum_data);

// Forum Rules
if ($auth->acl_get('f_read', $forum_id))
{
	generate_forum_rules($forum_data);
}

// Do we have subforums?
$active_forum_ary = $moderators = array();

if ($forum_data['left_id'] != $forum_data['right_id'] - 1)
{
	list($active_forum_ary, $moderators) = display_forums($forum_data, $config['load_moderators'], $config['load_moderators']);
}
else
{
	$template->assign_var('S_HAS_SUBFORUM', false);
	if ($config['load_moderators'])
	{
		get_moderators($moderators, $forum_id);
	}
}

// Dump out the page header and load viewforum template
page_header($forum_data['forum_name'], true, $forum_id); 

$template->set_filenames(array(
	'body' => 'viewforum_body.html')
);

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"), $forum_id);

$template->assign_vars(array(
	'U_VIEW_FORUM'			=> append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id" . (($start == 0) ? '' : "&start=$start")),
//MOD : Index Tabbed - Start
	'S_FORUMTABS'				=> (isset($config['load_forumtabs'])) ? $config['load_forumtabs'] : false,
// MOD : Index Tabbed - End
));

// Not postable forum or showing active topics?
if (!($forum_data['forum_type'] == FORUM_POST || (($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS) && $forum_data['forum_type'] == FORUM_CAT)))
{
	page_footer();
}

// Ok, if someone has only list-access, we only display the forum list.
// We also make this circumstance available to the template in case we want to display a notice. ;)
if (!$auth->acl_get('f_read', $forum_id))
{
	$template->assign_vars(array(
		'S_NO_READ_ACCESS'		=> true,
	));

	page_footer();
}

// Handle marking posts
if ($mark_read == 'topics')
{
	$token = request_var('hash', '');
	if (check_link_hash($token, 'global'))
	{
		// Add 0 to forums array to mark global announcements correctly
		markread('topics', array($forum_id, 0));
	}
	$redirect_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id);
	meta_refresh(3, $redirect_url);

	trigger_error($user->lang['TOPICS_MARKED'] . '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . $redirect_url . '">', '</a>'));
}

// Is a forum specific topic count required?
if ($forum_data['forum_topics_per_page'])
{
	$config['topics_per_page'] = $forum_data['forum_topics_per_page'];
}

// Do the forum Prune thang - cron type job ...
if ($forum_data['prune_next'] < time() && $forum_data['enable_prune'])
{
	$template->assign_var('RUN_CRON_TASK', '<img src="' . append_sid($phpbb_root_path . 'cron.' . $phpEx, 'cron_type=prune_forum&f=' . $forum_id) . '" alt="cron" width="1" height="1" />');
}

// Forum rules and subscription info
$s_watching_forum = array(
	'link'			=> '',
	'title'			=> '',
	'is_watching'	=> false,
);

if (($config['email_enable'] || $config['jab_enable']) && $config['allow_forum_notify'] && $forum_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_subscribe', $forum_id) || $user->data['user_id'] == ANONYMOUS))
{
	$notify_status = (isset($forum_data['notify_status'])) ? $forum_data['notify_status'] : NULL;
	watch_topic_forum('forum', $s_watching_forum, $user->data['user_id'], $forum_id, 0, $notify_status, $start, $forum_data['forum_name']);
}

$s_forum_rules = '';
gen_forum_auth_level('forum', $forum_id, $forum_data['forum_status']);

// Topic ordering options
$limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);

$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']);
$sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'r' => 't.topic_replies', 's' => 't.topic_title', 'v' => 't.topic_views');

$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir);

//-- mod : quick title edition -------------------------------------------------
//-- add
$sort_attr = request_var('attr_id', 0);
$qte->attr_sort($forum_id, $sort_attr);
//-- fin mod : quick title edition ---------------------------------------------
// Limit topics to certain time frame, obtain correct topic count
// global announcements must not be counted, normal announcements have to
// be counted, as forum_topics(_real) includes them
if ($sort_days)
{
	$min_post_time = time() - ($sort_days * 86400);

	$sql = 'SELECT COUNT(topic_id) AS num_topics
		FROM ' . TOPICS_TABLE . "
		WHERE forum_id = $forum_id
			AND ((topic_type <> " . POST_GLOBAL . " AND topic_last_post_time >= $min_post_time)
				OR topic_type = " . POST_ANNOUNCE . ")
		" . (($auth->acl_get('m_approve', $forum_id)) ? 'AND topic_approved <> ' . POST_DRAFT : 'AND topic_approved = 1');
			($auth->acl_get('m_harddelete', $topic_data['forum_id']) || $auth->acl_get('m_delete', $topic_data['forum_id'])) ? '' : (($auth->acl_get('f_delete', $topic_data['forum_id'])) ? " AND (topic_deleted = '0' OR topic_deleted = '{$user->data['user_id']}')" : " AND topic_deleted = '0'");

		// start mod save full drafts (and end mod too)...added test in preceding line to exclude drafts
//-- mod : quick title edition -------------------------------------------------
//-- add
	if ( $sort_attr )
	{
		$sql .= 'AND topic_attr_id = ' . (int) $sort_attr;
	}
//-- fin mod : quick title edition ---------------------------------------------
	$result = $db->sql_query($sql);
	$topics_count = (int) $db->sql_fetchfield('num_topics');
	$db->sql_freeresult($result);

	if (isset($_POST['sort']))
	{
		$start = 0;
	}
	$sql_limit_time = "AND t.topic_last_post_time >= $min_post_time";

	// Make sure we have information about day selection ready
	$template->assign_var('S_SORT_DAYS', true);
}
//-- mod : quick title edition -------------------------------------------------
//-- add
else if ( $sort_attr )
{
	$sql = 'SELECT COUNT(topic_id) AS num_topics
		FROM ' . TOPICS_TABLE . '
		WHERE forum_id = ' . (int) $forum_id . '
			AND ((topic_type <> ' . POST_GLOBAL . ' AND topic_attr_id = ' . (int) $sort_attr . ')
				OR topic_type = ' . POST_ANNOUNCE . ')';
	if ( !$auth->acl_get('m_approve', $forum_id) )
	{
		$sql .= 'AND topic_approved = 1';
	}
	$result = $db->sql_query($sql);
	$topics_count = (int) $db->sql_fetchfield('num_topics');
	$db->sql_freeresult($result);

	if ( isset($_POST['sort']) )
	{
		$start = 0;
	}

	$sql_limit_time = '';
}
//-- fin mod : quick title edition ---------------------------------------------
else
{

	include("{$phpbb_root_path}includes/mods/soft_delete.$phpEx");
	soft_delete_update_topic_count($forum_data);
	$topics_count = ($auth->acl_get('m_approve', $forum_id)) ? $forum_data['forum_topics_real'] : $forum_data['forum_topics'];
	$sql_limit_time = '';
}

// Make sure $start is set to the last page if it exceeds the amount
if ($start < 0 || $start > $topics_count)
{
	$start = ($start < 0) ? 0 : floor(($topics_count - 1) / $config['topics_per_page']) * $config['topics_per_page'];
}

// Basic pagewide vars
$post_alt = ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->lang['FORUM_LOCKED'] : $user->lang['POST_NEW_TOPIC'];

// Display active topics?
$s_display_active = ($forum_data['forum_type'] == FORUM_CAT && ($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS)) ? true : false;

$s_search_hidden_fields = array('fid' => array($forum_id));
if ($_SID)
{
	$s_search_hidden_fields['sid'] = $_SID;
}

if (!empty($_EXTRA_URL))
{
	foreach ($_EXTRA_URL as $url_param)
	{
		$url_param = explode('=', $url_param, 2);
		$s_hidden_fields[$url_param[0]] = $url_param[1];
	}
}

$template->assign_vars(array(
	'MODERATORS'	=> (!empty($moderators[$forum_id])) ? implode(', ', $moderators[$forum_id]) : '',

	'POST_IMG'					=> ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', $post_alt) : $user->img('button_topic_new', $post_alt),
	'NEWEST_POST_IMG'			=> $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
	'LAST_POST_IMG'				=> $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
	'FOLDER_IMG'				=> $user->img('topic_read', 'NO_UNREAD_POSTS'),
	'FOLDER_UNREAD_IMG'			=> $user->img('topic_unread', 'UNREAD_POSTS'),
	'FOLDER_HOT_IMG'			=> $user->img('topic_read_hot', 'NO_UNREAD_POSTS_HOT'),
	'FOLDER_HOT_UNREAD_IMG'		=> $user->img('topic_unread_hot', 'UNREAD_POSTS_HOT'),
	'FOLDER_LOCKED_IMG'			=> $user->img('topic_read_locked', 'NO_UNREAD_POSTS_LOCKED'),
	'FOLDER_LOCKED_UNREAD_IMG'	=> $user->img('topic_unread_locked', 'UNREAD_POSTS_LOCKED'),
	'FOLDER_STICKY_IMG'			=> $user->img('sticky_read', 'POST_STICKY'),
	'FOLDER_STICKY_UNREAD_IMG'	=> $user->img('sticky_unread', 'POST_STICKY'),
	'FOLDER_ANNOUNCE_IMG'		=> $user->img('announce_read', 'POST_ANNOUNCEMENT'),
	'FOLDER_ANNOUNCE_UNREAD_IMG'=> $user->img('announce_unread', 'POST_ANNOUNCEMENT'),
	'FOLDER_MOVED_IMG'			=> $user->img('topic_moved', 'TOPIC_MOVED'),
	'REPORTED_IMG'				=> $user->img('icon_topic_reported', 'TOPIC_REPORTED'),
	'UNAPPROVED_IMG'			=> $user->img('icon_topic_unapproved', 'TOPIC_UNAPPROVED'),
	'GOTO_PAGE_IMG'				=> $user->img('icon_post_target', 'GOTO_PAGE'),

	'L_NO_TOPICS' 			=> ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->lang['POST_FORUM_LOCKED'] : $user->lang['NO_TOPICS'],

	'S_DISPLAY_POST_INFO'	=> ($forum_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
// MOD : Index Tabbed - Start
	'S_FORUMTABS'				=> (isset($config['load_forumtabs'])) ? $config['load_forumtabs'] : false,
// MOD : Index Tabbed - END

	'S_IS_POSTABLE'			=> ($forum_data['forum_type'] == FORUM_POST) ? true : false,
	'S_USER_CAN_POST'		=> ($auth->acl_get('f_post', $forum_id)) ? true : false,
	'S_DISPLAY_ACTIVE'		=> $s_display_active,
	'S_SELECT_SORT_DIR'		=> $s_sort_dir,
	'S_SELECT_SORT_KEY'		=> $s_sort_key,
	'S_SELECT_SORT_DAYS'	=> $s_limit_days,
	'S_TOPIC_ICONS'			=> ($s_display_active && sizeof($active_forum_ary)) ? max($active_forum_ary['enable_icons']) : (($forum_data['enable_icons']) ? true : false),
	'S_WATCH_FORUM_LINK'	=> $s_watching_forum['link'],
	'S_WATCH_FORUM_TITLE'	=> $s_watching_forum['title'],
	'S_WATCHING_FORUM'		=> $s_watching_forum['is_watching'],
	'S_FORUM_ACTION'		=> append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id" . (($start == 0) ? '' : "&start=$start")),
	'S_DISPLAY_SEARCHBOX'	=> ($auth->acl_get('u_search') && $auth->acl_get('f_search', $forum_id) && $config['load_search']) ? true : false,
	'S_SEARCHBOX_ACTION'	=> append_sid("{$phpbb_root_path}search.$phpEx"),
	'S_SEARCH_LOCAL_HIDDEN_FIELDS'	=> build_hidden_fields($s_search_hidden_fields),
	'S_SINGLE_MODERATOR'	=> (!empty($moderators[$forum_id]) && sizeof($moderators[$forum_id]) > 1) ? false : true,
	'S_IS_LOCKED'			=> ($forum_data['forum_status'] == ITEM_LOCKED) ? true : false,
	'S_VIEWFORUM'			=> true,

	'U_MCP'				=> ($auth->acl_get('m_', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "f=$forum_id&i=main&mode=forum_view", true, $user->session_id) : '',
	'U_POST_NEW_TOPIC'	=> ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=post&f=' . $forum_id) : '',
	'U_VIEW_FORUM'		=> append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '') . (($start == 0) ? '' : "&start=$start")),
	'U_MARK_TOPICS'		=> ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . "&f=$forum_id&mark=topics") : '',
));

// Grab icons
$icons = $cache->obtain_icons();

// Grab all topic data
$rowset = $announcement_list = $topic_list = $global_announce_list = array();

$sql_array = array(
	'SELECT'	=> 't.*',
	'FROM'		=> array(
		TOPICS_TABLE		=> 't'
	),
	'LEFT_JOIN'	=> array(),
);

// start mod save full drafts (and end mod too)...added test in next line to exclude drafts 
$sql_approved = ($auth->acl_get('m_approve', $forum_id)) ? 'AND t.topic_approved <> ' . POST_DRAFT : 'AND t.topic_approved = 1';
// BEGIN Topics Only Visible to OP MOD
//Determine if forum is op only view only or user has permission to view all topics
if($forum_data['forum_op_only_view'] && !$auth->acl_get('f_op_only_view', $forum_id))
{
	$forum_op_only_view = 'AND (t.topic_poster = ' . $user->data['user_id'] . ' OR t.topic_type =' . POST_STICKY . ')';
}
else
	$forum_op_only_view = '';
// END Topics Only Visible to OP MOD

if ($user->data['is_registered'])
{
	if ($config['load_db_track'])
	{
		$sql_array['LEFT_JOIN'][] = array('FROM' => array(TOPICS_POSTED_TABLE => 'tp'), 'ON' => 'tp.topic_id = t.topic_id AND tp.user_id = ' . $user->data['user_id']);
		$sql_array['SELECT'] .= ', tp.topic_posted';
	}

	if ($config['load_db_lastread'])
	{
		$sql_array['LEFT_JOIN'][] = array('FROM' => array(TOPICS_TRACK_TABLE => 'tt'), 'ON' => 'tt.topic_id = t.topic_id AND tt.user_id = ' . $user->data['user_id']);
		$sql_array['SELECT'] .= ', tt.mark_time';

		if ($s_display_active && sizeof($active_forum_ary))
		{
			$sql_array['LEFT_JOIN'][] = array('FROM' => array(FORUMS_TRACK_TABLE => 'ft'), 'ON' => 'ft.forum_id = t.forum_id AND ft.user_id = ' . $user->data['user_id']);
			$sql_array['SELECT'] .= ', ft.mark_time AS forum_mark_time';
		}
	}
}




// BEGIN Topic Text Hover Mod
if ($config['hover_active'] && !$user->data['user_text_hover'])
{
	include($phpbb_root_path . 'includes/topic_text_hover.' . $phpEx);
	// the first post text in a topic
	if($config['hover_show'] == TOPIC_TEXT_HOVER_FIRST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
	{
		$sql_array['LEFT_JOIN'][] = array('FROM' => array(POSTS_TABLE => 'pt'), 'ON' => 'pt.post_id = t.topic_first_post_id');
		$sql_array['SELECT'] .= ', pt.post_text AS first_text_hover';
	}
	// the last post text in a topic
	if($config['hover_show'] == TOPIC_TEXT_HOVER_LAST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
	{
		$sql_array['LEFT_JOIN'][] = array('FROM' => array(POSTS_TABLE => 'ptl'), 'ON' => 'ptl.post_id = t.topic_last_post_id');
		$sql_array['SELECT'] .= ', ptl.post_text AS last_text_hover';
	}
}
// END Topic Text Hover Mod
if ($forum_data['forum_type'] == FORUM_POST)
{
	// Obtain announcements ... removed sort ordering, sort by time in all cases
	$sql = $db->sql_build_query('SELECT', array(
		'SELECT'	=> $sql_array['SELECT'],
		'FROM'		=> $sql_array['FROM'],
		'LEFT_JOIN'	=> $sql_array['LEFT_JOIN'],

		'WHERE'		=> 't.forum_id IN (' . $forum_id . ', 0)
			AND t.topic_type IN (' . POST_ANNOUNCE . ', ' . POST_GLOBAL . ')
			AND t.topic_approved <> ' . POST_DRAFT,

		'ORDER_BY'	=> 't.topic_type DESC, t.topic_last_post_time DESC',
	));
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		if (!$row['topic_approved'] && !$auth->acl_get('m_approve', $row['forum_id']))
		{
			// Do not display announcements that are waiting for approval.
			continue;
		}

		$rowset[$row['topic_id']] = $row;
		$announcement_list[] = $row['topic_id'];

		if ($row['topic_type'] == POST_GLOBAL)
		{
			$global_announce_list[$row['topic_id']] = true;
		}
		else
		{
			$topics_count--;
		}
	}
	$db->sql_freeresult($result);
}

// If the user is trying to reach late pages, start searching from the end
$store_reverse = false;
$sql_limit = $config['topics_per_page'];
if ($start > $topics_count / 2)
{
	$store_reverse = true;

	if ($start + $config['topics_per_page'] > $topics_count)
	{
		$sql_limit = min($config['topics_per_page'], max(1, $topics_count - $start));
	}

	// Select the sort order
	$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'ASC' : 'DESC');
	$sql_start = max(0, $topics_count - $sql_limit - $start);
}
else
{
	// Select the sort order
	$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
	$sql_start = $start;
}

if ($forum_data['forum_type'] == FORUM_POST || !sizeof($active_forum_ary))
{
	$sql_where = 't.forum_id = ' . $forum_id;
}
else if (empty($active_forum_ary['exclude_forum_id']))
{
	$sql_where = $db->sql_in_set('t.forum_id', $active_forum_ary['forum_id']);
}
else
{
	$get_forum_ids = array_diff($active_forum_ary['forum_id'], $active_forum_ary['exclude_forum_id']);
	$sql_where = (sizeof($get_forum_ids)) ? $db->sql_in_set('t.forum_id', $get_forum_ids) : 't.forum_id = ' . $forum_id;
}

// Grab just the sorted topic ids
$sql = 'SELECT t.topic_id
	FROM ' . TOPICS_TABLE . " t
	WHERE $sql_where
		AND t.topic_type IN (" . POST_NORMAL . ', ' . POST_STICKY . ")
		$sql_approved
$forum_op_only_view
		$sql_limit_time
	ORDER BY t.topic_type " . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order;
//-- mod : quick title edition -------------------------------------------------
//-- add
if ( $sort_attr )
{
	$sql = str_replace($sql_where, $sql_where . ' AND t.topic_attr_id = ' . (int) $sort_attr, $sql);
}
//-- fin mod : quick title edition ---------------------------------------------
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);

while ($row = $db->sql_fetchrow($result))
{
	$topic_list[] = (int) $row['topic_id'];
}
$db->sql_freeresult($result);

// For storing shadow topics
$shadow_topic_list = array();

if (sizeof($topic_list))
{
	// SQL array for obtaining topics/stickies
	$sql_array = array(
		'SELECT'		=> $sql_array['SELECT'],
		'FROM'			=> $sql_array['FROM'],
		'LEFT_JOIN'		=> $sql_array['LEFT_JOIN'],

		'WHERE'			=> $db->sql_in_set('t.topic_id', $topic_list),
	);

	// If store_reverse, then first obtain topics, then stickies, else the other way around...
	// Funnily enough you typically save one query if going from the last page to the middle (store_reverse) because
	// the number of stickies are not known
	$sql = $db->sql_build_query('SELECT', $sql_array);
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		if ($row['topic_status'] == ITEM_MOVED)
		{
			$shadow_topic_list[$row['topic_moved_id']] = $row['topic_id'];
		}

		$rowset[$row['topic_id']] = $row;
	}
	$db->sql_freeresult($result);
}

// If we have some shadow topics, update the rowset to reflect their topic information
if (sizeof($shadow_topic_list))
{
	// BEGIN Topic Text Hover MOD
	if ($config['hover_active'] && !$user->data['user_text_hover'])
	{
		include($phpbb_root_path . 'includes/topic_text_hover.' . $phpEx);
		$sql_join = $sql_select = '';
		if($config['hover_show'] == TOPIC_TEXT_HOVER_FIRST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
		{
			$sql_join .= ' LEFT JOIN ' . POSTS_TABLE . ' p ON (p.post_id = t.topic_first_post_id)';
			$sql_select .=  ', p.post_text AS first_text_hover';
		}
		if($config['hover_show'] == TOPIC_TEXT_HOVER_LAST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
		{
			$sql_join .= ' LEFT JOIN ' . POSTS_TABLE . ' pt ON (pt.post_id = t.topic_last_post_id)';
			$sql_select .= ', pt.post_text AS last_text_hover';
		}
	}
	// END Topic Text Hover MOD
	$sql = 'SELECT  t.* ' . $sql_select . '
		FROM ' . TOPICS_TABLE . ' t

' . $sql_join . '
		WHERE ' . $db->sql_in_set(' t.topic_id', array_keys($shadow_topic_list));
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		$orig_topic_id = $shadow_topic_list[$row['topic_id']];

		// If the shadow topic is already listed within the rowset (happens for active topics for example), then do not include it...
		if (isset($rowset[$row['topic_id']]))
		{
			// We need to remove any trace regarding this topic. :)
			unset($rowset[$orig_topic_id]);
			unset($topic_list[array_search($orig_topic_id, $topic_list)]);
			$topics_count--;

			continue;
		}

		// Do not include those topics the user has no permission to access
		if (!$auth->acl_get('f_read', $row['forum_id']))
		{
			// We need to remove any trace regarding this topic. :)
			unset($rowset[$orig_topic_id]);
			unset($topic_list[array_search($orig_topic_id, $topic_list)]);
			$topics_count--;

			continue;
		}

		// We want to retain some values
		$row = array_merge($row, array(
			'topic_moved_id'	=> $rowset[$orig_topic_id]['topic_moved_id'],
			'topic_status'		=> $rowset[$orig_topic_id]['topic_status'],
			'topic_type'		=> $rowset[$orig_topic_id]['topic_type'],
			'topic_title'		=> $rowset[$orig_topic_id]['topic_title'],
		));

		// Shadow topics are never reported
		$row['topic_reported'] = 0;

		$rowset[$orig_topic_id] = $row;
	}
	$db->sql_freeresult($result);
}
unset($shadow_topic_list);

// Ok, adjust topics count for active topics list
if ($s_display_active)
{
	$topics_count = 1;
}

// We need to readd the local announcements to the forums total topic count, otherwise the number is different from the one on the forum list
$total_topic_count = $topics_count + sizeof($announcement_list) - sizeof($global_announce_list);
//-- mod : quick title edition -------------------------------------------------
//-- add
if ( $sort_attr )
{
	$u_sort_param .= (strlen($u_sort_param) ? '&' : '') . 'attr_id=' . $sort_attr;
}
//-- fin mod : quick title edition ---------------------------------------------

$template->assign_vars(array(
	'PAGINATION'	=> generate_pagination(append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id" . ((strlen($u_sort_param)) ? "&$u_sort_param" : '')), $topics_count, $config['topics_per_page'], $start),
	'PAGE_NUMBER'	=> on_page($topics_count, $config['topics_per_page'], $start),
	'TOTAL_TOPICS'	=> ($s_display_active) ? false : (($total_topic_count == 1) ? $user->lang['VIEW_FORUM_TOPIC'] : sprintf($user->lang['VIEW_FORUM_TOPICS'], $total_topic_count)))
);

$topic_list = ($store_reverse) ? array_merge($announcement_list, array_reverse($topic_list)) : array_merge($announcement_list, $topic_list);
$topic_tracking_info = $tracking_topics = array();



// Okay, lets dump out the page ...
if (sizeof($topic_list))
{
	$mark_forum_read = true;
	$mark_time_forum = 0;

	// Active topics?
	if ($s_display_active && sizeof($active_forum_ary))
	{
		// Generate topic forum list...
		$topic_forum_list = array();
		foreach ($rowset as $t_id => $row)
		{
			$topic_forum_list[$row['forum_id']]['forum_mark_time'] = ($config['load_db_lastread'] && $user->data['is_registered'] && isset($row['forum_mark_time'])) ? $row['forum_mark_time'] : 0;
			$topic_forum_list[$row['forum_id']]['topics'][] = $t_id;
		}

		if ($config['load_db_lastread'] && $user->data['is_registered'])
		{
			foreach ($topic_forum_list as $f_id => $topic_row)
			{
				$topic_tracking_info += get_topic_tracking($f_id, $topic_row['topics'], $rowset, array($f_id => $topic_row['forum_mark_time']), false);
			}
		}
		else if ($config['load_anon_lastread'] || $user->data['is_registered'])
		{
			foreach ($topic_forum_list as $f_id => $topic_row)
			{
				$topic_tracking_info += get_complete_topic_tracking($f_id, $topic_row['topics'], false);
			}
		}

		unset($topic_forum_list);
	}
	else
	{
		if ($config['load_db_lastread'] && $user->data['is_registered'])
		{
			$topic_tracking_info = get_topic_tracking($forum_id, $topic_list, $rowset, array($forum_id => $forum_data['mark_time']), $global_announce_list);
			$mark_time_forum = (!empty($forum_data['mark_time'])) ? $forum_data['mark_time'] : $user->data['user_lastmark'];
		}
		else if ($config['load_anon_lastread'] || $user->data['is_registered'])
		{
			$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_list, $global_announce_list);

			if (!$user->data['is_registered'])
			{
				$user->data['user_lastmark'] = (isset($tracking_topics['l'])) ? (int) (base_convert($tracking_topics['l'], 36, 10) + $config['board_startdate']) : 0;
			}
			$mark_time_forum = (isset($tracking_topics['f'][$forum_id])) ? (int) (base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate']) : $user->data['user_lastmark'];
		}
	}

//-- mod : quick title edition -------------------------------------------------
//-- add
	$qte->get_users_by_topic_id($topic_list);
//-- fin mod : quick title edition ---------------------------------------------
	$s_type_switch = 0;
	foreach ($topic_list as $topic_id)
	{
		$row = &$rowset[$topic_id];
		// cBB Quick Mod
		$qm_topic_id = $topic_id;

		$topic_forum_id = ($row['forum_id']) ? (int) $row['forum_id'] : $forum_id;

		// This will allow the style designer to output a different header
		// or even separate the list of announcements from sticky and normal topics
		if ($config['thanks_topic_reput_view'])
		{
			get_thanks_topic_reput($topic_id);
		}
//-- mod : moderator messages --------------------------------------------------
//-- add
		if ( $auth->acl_get('m_mm_read', $forum_id) && !empty($row['posts_moderation_total']) )
		{
			$i_moderator_message = 'icon_moderator_message';
			$l_moderator_message = 'POST_MODERATION_HERE';
			if ( $row['posts_moderation_total'] > 1 )
			{
				$i_moderator_message = 'icon_moderator_messages';
				$l_moderator_message = 'POSTS_MODERATION_HERE';
			}

			$template->alter_block_array('topicrow', array(
				'I_POST_MODERATION' => $user->img($i_moderator_message, $user->lang($l_moderator_message, $row['posts_moderation_total'])),
			), true, 'change');
		}
//-- fin mod : moderator messages ----------------------------------------------
		$s_type_switch = $row['topic_type'];

		if ($sort_days) // if not, the file is already included
		{
			include("{$phpbb_root_path}includes/mods/soft_delete.$phpEx");
		}
		soft_delete_update_reply_count($row, false);
		if (isset($row['soft_deleted_error']))
		{
			continue;
		}

		// Replies
		$replies = ($auth->acl_get('m_approve', $topic_forum_id)) ? $row['topic_replies_real'] : $row['topic_replies'];

		if ($row['topic_status'] == ITEM_MOVED)
		{
			$topic_id = $row['topic_moved_id'];
			$unread_topic = false;
		}
		else
		{
			$unread_topic = (isset($topic_tracking_info[$topic_id]) && $row['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
		}

		// Get folder img, topic status/type related information
		$folder_img = $folder_alt = $topic_type = '';
		topic_status($row, $replies, $unread_topic, $folder_img, $folder_alt, $topic_type);

		// Generate all the URIs ...
		$view_topic_url_params = 'f=' . $topic_forum_id . '&t=' . $topic_id;
		$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params);

		$topic_unapproved = (!$row['topic_approved'] && $auth->acl_get('m_approve', $topic_forum_id)) ? true : false;
		// start mod save full drafts...added constraint in next line that $row['topic_approved'] == 1 (rather than just that it be non-zero)
		$posts_unapproved = ($row['topic_approved'] == 1 && $row['topic_replies'] < $row['topic_replies_real'] && $auth->acl_get('m_approve', $topic_forum_id)) ? true : false;
		$u_mcp_queue = ($topic_unapproved || $posts_unapproved) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=' . (($topic_unapproved) ? 'approve_details' : 'unapproved_posts') . "&t=$topic_id", true, $user->session_id) : '';




		// BEGIN Topic Text Hover Mod
		if ((!empty($row['first_text_hover']) || !empty($row['last_text_hover'])) && $auth->acl_get('f_read', $forum_id))
		{
			// strip all bbcode
			include($phpbb_root_path . 'includes/topic_text_hover.' . $phpEx);
			if(!empty($row['first_text_hover']))
			{
				$first_text_hover = bbcode_strip($row['first_text_hover']);
				if (utf8_strlen($first_text_hover) >= $config['hover_char_limit'])
				{
					$first_text_hover = (utf8_strlen($first_text_hover) > $config['hover_char_limit'] + 3) ? utf8_substr($first_text_hover, 0, $config['hover_char_limit']) . '...' : $first_text_hover;
				}
			}
			if(!empty($row['last_text_hover']))
			{
				$last_text_hover = bbcode_strip($row['last_text_hover']);
				if (utf8_strlen($last_text_hover) >= $config['hover_char_limit'])
				{
					$last_text_hover = (utf8_strlen($last_text_hover) > $config['hover_char_limit'] + 3) ? utf8_substr($last_text_hover, 0, $config['hover_char_limit']) . '...' : $last_text_hover;
				}
			}
		}
		else
		{
			$first_text_hover = $last_text_hover = '';
		}
		// END Topic Text Hover Mod
		// Send vars to template
		$template->assign_block_vars('topicrow', array(
			'FORUM_ID'					=> $topic_forum_id,
			'TOPIC_ID'					=> $topic_id,
			// Begin cBB Quick Mod
			'QM_TOPIC_ID'			=> $qm_topic_id,
			'QM_ACTIONS'			=> $quick_mod->get_row_actions($topic_forum_id, $row['topic_type'], $row['topic_status'], $topic_unapproved),
			// End cBB Quick Mod
			'TOPIC_AUTHOR'				=> get_username_string('username', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'TOPIC_AUTHOR_COLOUR'		=> get_username_string('colour', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'TOPIC_AUTHOR_FULL'			=> get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'FIRST_POST_TIME'			=> $user->format_date($row['topic_time']),
			'LAST_POST_SUBJECT'			=> censor_text($row['topic_last_post_subject']),
			'LAST_POST_TIME'			=> $user->format_date($row['topic_last_post_time']),
			'LAST_VIEW_TIME'			=> $user->format_date($row['topic_last_view_time']),
			'LAST_POST_AUTHOR'			=> get_username_string('username', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'LAST_POST_AUTHOR_COLOUR'	=> get_username_string('colour', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'LAST_POST_AUTHOR_FULL'		=> get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),

			'PAGINATION'		=> topic_generate_pagination($replies, $view_topic_url),
			// BEGIN Topic Post Text Mod
			'FIRST_TEXT_HOVER'	=> (isset($first_text_hover)) ? censor_text($first_text_hover) : '',
			'LAST_TEXT_HOVER'	=> (isset($last_text_hover)) ? censor_text($last_text_hover) : '',
			'LAST_POST_IMG'     => $user->img('icon_topic_latest'),
			// END Topic Post Text Mod
			'REPLIES'			=> number_format($replies),
			'VIEWS'				=> number_format($row['topic_views']),
			'TOPIC_TITLE'		=> censor_text($row['topic_title']),
			'TOPIC_TITLE_COLOUR' => $row['topic_title_colour'],
			'TOPIC_TYPE'		=> $topic_type,

			'TOPIC_FOLDER_IMG'		=> $user->img($folder_img, $folder_alt),
			'TOPIC_FOLDER_IMG_SRC'	=> $user->img($folder_img, $folder_alt, false, '', 'src'),
			'TOPIC_FOLDER_IMG_ALT'	=>  (!isset($first_text_hover)) ? $user->lang[$folder_alt]  : '',
			'TOPIC_FOLDER_IMG_WIDTH'=> $user->img($folder_img, '', false, '', 'width'),
			'TOPIC_FOLDER_IMG_HEIGHT'	=> $user->img($folder_img, '', false, '', 'height'),


			'TOPIC_ICON_IMG'		=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['img'] : '',
			'TOPIC_ICON_IMG_WIDTH'	=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['width'] : '',
			'TOPIC_ICON_IMG_HEIGHT'	=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['height'] : '',
			'ATTACH_ICON_IMG'		=> ($auth->acl_get('u_download') && $auth->acl_get('f_download', $topic_forum_id) && $row['topic_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
			'UNAPPROVED_IMG'		=> ($topic_unapproved || $posts_unapproved) ? $user->img('icon_topic_unapproved', ($topic_unapproved) ? 'TOPIC_UNAPPROVED' : 'POSTS_UNAPPROVED') : '',

			'S_TOPIC_TYPE'			=> $row['topic_type'],
			'S_USER_POSTED'			=> (isset($row['topic_posted']) && $row['topic_posted']) ? true : false,
			'S_UNREAD_TOPIC'		=> $unread_topic,
			'S_TOPIC_REPORTED'		=> (!empty($row['topic_reported']) && $auth->acl_get('m_report', $topic_forum_id)) ? true : false,
			'S_TOPIC_UNAPPROVED'	=> $topic_unapproved,
			'S_POSTS_UNAPPROVED'	=> $posts_unapproved,
			'S_HAS_POLL'			=> ($row['poll_start']) ? true : false,
			'S_HAS_SURVEY'			=> ($row['topic_survey']) ? true : false,
			'S_POST_ANNOUNCE'		=> ($row['topic_type'] == POST_ANNOUNCE) ? true : false,
			'S_POST_GLOBAL'			=> ($row['topic_type'] == POST_GLOBAL) ? true : false,
			'S_POST_STICKY'			=> ($row['topic_type'] == POST_STICKY) ? true : false,
			'S_TOPIC_LOCKED'		=> ($row['topic_status'] == ITEM_LOCKED) ? true : false,
			'S_TOPIC_MOVED'			=> ($row['topic_status'] == ITEM_MOVED) ? true : false,
			'S_PASSWORDED_TOPIC'   => (!empty($row['topic_password'])) ? true : false,

			'U_NEWEST_POST'			=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params . '&view=unread') . '#unread',
			'U_LAST_POST'			=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params . '&p=' . $row['topic_last_post_id']) . '#p' . $row['topic_last_post_id'],
			'U_LAST_POST_AUTHOR'	=> get_username_string('profile', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'U_TOPIC_AUTHOR'		=> get_username_string('profile', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'U_VIEW_TOPIC'			=> $view_topic_url,
			'U_MCP_REPORT'			=> append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=reports&f=' . $topic_forum_id . '&t=' . $topic_id, true, $user->session_id),
			'U_MCP_QUEUE'			=> $u_mcp_queue,
//-- mod : Who posted ------------------------------------------------------------
//-- add
			'U_WHO_POSTED'			=> append_sid("{$phpbb_root_path}posting.$phpEx", "mode=who_posted&t=$topic_id&f=$forum_id"),
//-- fin mod : Who posted --------------------------------------------------------


			'S_TOPIC_DELETED'		=> (($row['topic_deleted'] != 0) ? true : false),
			'S_TOPIC_TYPE_SWITCH'	=> ($s_type_switch == $s_type_switch_test) ? -1 : 0)
		);

//-- mod : quick title edition -------------------------------------------------
//-- add
		if ( !empty($row['topic_attr_id']) )
		{
			$template->alter_block_array('topicrow', array(
				'S_TOPIC_ATTR' => true,
				'TOPIC_ATTRIBUTE' => $qte->attr_display($row['topic_attr_id'], $row['topic_attr_user'], $row['topic_attr_time']),
			), true, 'change');
		}
//-- fin mod : quick title edition ---------------------------------------------
		$s_type_switch_test = $row['topic_type'];

		if ($unread_topic)
		{
			$mark_forum_read = false;
		}

		unset($rowset[$topic_id]);
	}
}

// This is rather a fudge but it's the best I can think of without requiring information
// on all topics (as we do in 2.0.x). It looks for unread or new topics, if it doesn't find
// any it updates the forum last read cookie. This requires that the user visit the forum
// after reading a topic
if ($forum_data['forum_type'] == FORUM_POST && sizeof($topic_list) && $mark_forum_read)
{
	update_forum_tracking_info($forum_id, $forum_data['forum_last_post_time'], false, $mark_time_forum);
}

page_footer();

?>
Pro-choice, Atheist, Pro-LGBT rights
Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid. - Albert Einstein
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

I can't look now, but tonight I'll do ;).
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

That part is not in the right place :

Code: Select all

//-- mod : moderator messages --------------------------------------------------
//-- add
        if ( $auth->acl_get('m_mm_read', $forum_id) && !empty($row['posts_moderation_total']) )
        {
            $i_moderator_message = 'icon_moderator_message';
            $l_moderator_message = 'POST_MODERATION_HERE';
            if ( $row['posts_moderation_total'] > 1 )
            {
                $i_moderator_message = 'icon_moderator_messages';
                $l_moderator_message = 'POSTS_MODERATION_HERE';
            }

            $template->alter_block_array('topicrow', array(
                'I_POST_MODERATION' => $user->img($i_moderator_message, $user->lang($l_moderator_message, $row['posts_moderation_total'])),
            ), true, 'change');
        }
//-- fin mod : moderator messages ---------------------------------------------- 
In your case, you have to place it before :

Code: Select all

$s_type_switch_test = $row['topic_type']; 
User avatar
Jessica
Former Team Member
Posts: 4342
Joined: Sun Jul 18, 2010 2:53 pm
Location: Pennsylvania, USA
Name: Jessica
Contact:

Re: [RC2] Moderator Messages

Post by Jessica »

never mind, I fixed the problem (:
Pro-choice, Atheist, Pro-LGBT rights
Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid. - Albert Einstein
User avatar
Theriddler1
Registered User
Posts: 449
Joined: Sat Aug 27, 2011 11:00 pm
Location: NL
Name: Theriddler❶
Contact:

Re: [RC2] Moderator Messages

Post by Theriddler1 »

hello AbDev,

just tested the new RC2 out but there is something wrong with i think the css.

post preview looks correct while after we confirm the message, there is one Big block.

screenshot:

Image

also when i want to delete the moderator message with the button on the right side i get:

Code: Select all

SQL ERROR [ mysql4 ]

Out of range value for column 'posts_moderation_total' at row 1 [1264]

SQL

UPDATE phpbb_topics SET posts_moderation_total = posts_moderation_total - 1 WHERE topic_id = 477

BACKTRACE

FILE: [ROOT]/includes/db/mysql.php
LINE: 175
CALL: dbal->sql_error()

FILE: [ROOT]/viewtopic.php
LINE: 2304
CALL: dbal_mysql->sql_query()

FILE: [ROOT]/viewtopic.php
LINE: 205
CALL: post_moderation_delete()
Theriddler - Former Moderator @ phpBB.nl | phpBBservice.nl Team-member
Image My Extensions | buy me a beer Image
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

Could you give the result of that query please ?

Code: Select all

SELECT COUNT(post_id) AS total
	FROM phpbb_posts
	WHERE post_moderation <> ''
		AND topic_id = 477;
User avatar
Theriddler1
Registered User
Posts: 449
Joined: Sat Aug 27, 2011 11:00 pm
Location: NL
Name: Theriddler❶
Contact:

Re: [RC2] Moderator Messages

Post by Theriddler1 »

ABDev wrote:Could you give the result of that query please ?

Code: Select all

SELECT topic_id, COUNT(post_id) AS total
	FROM phpbb_posts
	WHERE post_moderation <> ''
		AND topic_id = 477;

Code: Select all

    SELECT topic_id, COUNT(post_id) AS total FROM phpbb_posts WHERE post_moderation <> '' AND topic_id = 477 

topic_id 	total
477 	          1
when i tryed to delete the message there is a confermation box with YES and NO when i clicked on YES the sql error comes, when i go back to the post, the moderation message was gone.

then i did the query again ,this time the results were:

Code: Select all

topic_id 	total
 	              0
also when i want to delete the moderation message and when clicked on the NO button ,a message appears which says: You cannot delete moderation messages in this forum.

EDIT: okay i managed to fix the sql error, i changed trough phpmyadmin within table:
phpbb_topics > posts_moderation_total the column type to: bigint(20)


Hope this is the right thing to do. but still have issue with the moderation message in posts, and when want to delete the mod message and confirm with NO, message appears with: You cannot delete moderation messages in this forum.

wich is kind of strange since i've got that permission set to yes.
Theriddler - Former Moderator @ phpBB.nl | phpBBservice.nl Team-member
Image My Extensions | buy me a beer Image
User avatar
Jessica
Former Team Member
Posts: 4342
Joined: Sun Jul 18, 2010 2:53 pm
Location: Pennsylvania, USA
Name: Jessica
Contact:

Re: [RC2] Moderator Messages

Post by Jessica »

that's strange, I didn't have the css problem or the sql problem you have. I checked the preview, the box looks fine. I deleted the mod message and did not get the error.
Pro-choice, Atheist, Pro-LGBT rights
Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid. - Albert Einstein
User avatar
Theriddler1
Registered User
Posts: 449
Joined: Sat Aug 27, 2011 11:00 pm
Location: NL
Name: Theriddler❶
Contact:

Re: [RC2] Moderator Messages

Post by Theriddler1 »

Jessica wrote:that's strange, I didn't have the css problem or the sql problem you have. I checked the preview, the box looks fine. I deleted the mod message and did not get the error.
Hi Jessica,

I think the css problem is due to the fact that i have the profiles in posts on the left side.
https://www.phpbb.com/kb/article/prosil ... s-on-left/
but don't know what to change in order to fix it with that.

also when you want to delete the moderation message, and you click on the NO button, then are you getting the same message as i did ?

the sql error is indeed strange, i found the sollution here: (last post answer at link below)
http://stackoverflow.com/questions/1786 ... lumn-error
Theriddler - Former Moderator @ phpBB.nl | phpBBservice.nl Team-member
Image My Extensions | buy me a beer Image
ABDev
Registered User
Posts: 905
Joined: Sun Aug 21, 2005 9:29 pm
Location: France
Name: Adrien Bonnel

Re: [RC2] Moderator Messages

Post by ABDev »

So, all is good ? :).
User avatar
Theriddler1
Registered User
Posts: 449
Joined: Sat Aug 27, 2011 11:00 pm
Location: NL
Name: Theriddler❶
Contact:

Re: [RC2] Moderator Messages

Post by Theriddler1 »

ABDev wrote:So, all is good ? :).
The sql error is gone after i changed the column type too: BIGINT value of 20

I still have the issue with the moderation block as shown in the picture in my previous posts,
because as what i said earlier, i have the profile info on the left side within posts.

So maybe that's why it looks too Big, how can we change that in order to work with that ?

Last issue i'm having ,after i want to delete moderation message and when clicked on the NO button then it says that i'm not allowed to delete the message.
I clicked NO, normally you would be redirected back to viewtopic but i get that message.

so how can we fix this ?

Best Regards.
Theriddler - Former Moderator @ phpBB.nl | phpBBservice.nl Team-member
Image My Extensions | buy me a beer Image
Locked

Return to “[3.0.x] Abandoned MODs”