buddy_list) { $usr->buddy_list = unserialize($usr->buddy_list); } if ($usr->ignore_list) { $usr->ignore_list = unserialize($usr->ignore_list); if (isset($usr->ignore_list[1])) { $usr->ignore_list[0] =& $usr->ignore_list[1]; } } /* Handle temporarily un-hidden users. */ if (isset($_GET['reveal'])) { $_GET['reveal'] = htmlspecialchars((string)$_GET['reveal']); foreach(explode(':', $_GET['reveal']) as $v) { $v = (int) $v; if (isset($usr->ignore_list[$v])) { $usr->ignore_list[$v] = 0; } } if ($GLOBALS['FUD_OPT_2'] & 32768) { define('unignore_tmp', '/'. $_GET['reveal']); } else { define('unignore_tmp', '&reveal='. $_GET['reveal']); } } else { define('unignore_tmp', ''); } } else { define('unignore_tmp', ''); if (isset($_GET['reveal'])) { unset($_GET['reveal']); } } $_SERVER['QUERY_STRING_ENC'] = htmlspecialchars($_SERVER['QUERY_STRING']); function make_tmp_unignore_lnk($id) { if ($GLOBALS['FUD_OPT_2'] & 32768 && strpos($_SERVER['QUERY_STRING_ENC'], '?') === false) { $_SERVER['QUERY_STRING_ENC'] .= '?1=1'; } if (!isset($_GET['reveal'])) { return $_SERVER['QUERY_STRING_ENC'] .'&reveal='. $id; } else { return str_replace('&reveal='. $_GET['reveal'], unignore_tmp .':'. $id, $_SERVER['QUERY_STRING_ENC']); } } function make_reveal_link($id) { if ($GLOBALS['FUD_OPT_2'] & 32768 && strpos($_SERVER['QUERY_STRING_ENC'], '?') === false) { $_SERVER['QUERY_STRING_ENC'] .= '?1=1'; } if (empty($GLOBALS['__FMDSP__'])) { return $_SERVER['QUERY_STRING_ENC'] .'&rev='. $id; } else { return str_replace('&rev='. $_GET['rev'], reveal_lnk .':'. $id, $_SERVER['QUERY_STRING_ENC']); } } /* Draws a message, needs a message object, user object, permissions array, * flag indicating wether or not to show controls and a variable indicating * the number of the current message (needed for cross message pager) * last argument can be anything, allowing forms to specify various vars they * need to. */ function tmpl_drawmsg($obj, $usr, $perms, $hide_controls, &$m_num, $misc) { $o1 =& $GLOBALS['FUD_OPT_1']; $o2 =& $GLOBALS['FUD_OPT_2']; $a = (int) $obj->users_opt; $b =& $usr->users_opt; $MOD =& $GLOBALS['MOD']; $next_page = $next_message = $prev_message = ''; /* Draw next/prev message controls. */ if (!$hide_controls && $misc) { /* Tree view is a special condition, we only show 1 message per page. */ if ($_GET['t'] == 'tree' || $_GET['t'] == 'tree_msg') { $prev_message = $misc[0] ? 'Go to previous message' : ''; $next_message = $misc[1] ? 'Go to previous message' : ''; } else { /* Handle previous link. */ if (!$m_num && $obj->id > $obj->root_msg_id) { /* prev link on different page */ $prev_message = 'Go to previous message'; } else if ($m_num) { /* Inline link, same page. */ $prev_message = 'Go to previous message'; } /* Handle next link. */ if ($obj->id < $obj->last_post_id) { if ($m_num && !($misc[1] - $m_num - 1)) { /* next page link */ $next_message = 'Go to previous message'; $next_page = 'Next Page '; } else { $next_message = 'Go to next message'; } } } ++$m_num; } $user_login = $obj->user_id ? $obj->login : $GLOBALS['ANON_NICK']; /* Check if the message should be ignored and it is not temporarily revelead. */ if ($usr->ignore_list && !empty($usr->ignore_list[$obj->poster_id]) && !isset($GLOBALS['__FMDSP__'][$obj->id])) { return !$hide_controls ? '
'.($obj->user_id ? 'Message by '.$obj->login.' is ignored' : ''.$GLOBALS['ANON_NICK'].' is ignored' ) .'  [reveal message]  [reveal all messages by '.$user_login.']  [stop ignoring this user] '.$prev_message.$next_message.'
' : ' Post by '.$user_login.' is ignored  '; } if ($obj->user_id && !$hide_controls) { $custom_tag = $obj->custom_status ? '
'.$obj->custom_status.'' : ''; $c = (int) $obj->level_opt; if ($obj->avatar_loc && $a & 8388608 && $b & 8192 && $o1 & 28 && !($c & 2)) { if (!($c & 1)) { $level_name =& $obj->level_name; $level_image = $obj->level_img ? ' ' : ''; } else { $level_name = $level_image = ''; } } else { $level_image = $obj->level_img ? ' ' : ''; $obj->avatar_loc = ''; $level_name =& $obj->level_name; } $avatar = ($obj->avatar_loc || $level_image) ? ''.$obj->avatar_loc.$level_image.'' : ''; $dmsg_tags = ($custom_tag || $level_name) ? '
'.$level_name.$custom_tag.'
' : ''; if (($o2 & 32 && !($a & 32768)) || $b & 1048576) { $online_indicator = (($obj->time_sec + $GLOBALS['LOGEDIN_TIMEOUT'] * 60) > __request_timestamp__) ? ''.$obj->login.' is currently online ' : ''.$obj->login.' is currently offline '; } else { $online_indicator = ''; } $user_link = ''.$user_login.''; $location = $obj->location ? '
Location: '.(strlen($obj->location) > $GLOBALS['MAX_LOCATION_SHOW'] ? substr($obj->location, 0, $GLOBALS['MAX_LOCATION_SHOW']) . '...' : $obj->location).'' : ''; if (_uid && _uid != $obj->user_id) { $buddy_link = !isset($usr->buddy_list[$obj->user_id]) ? 'add to buddy list
' : 'remove from buddy list
'; $ignore_link = !isset($usr->ignore_list[$obj->user_id]) ? 'ignore all messages by this user' : 'stop ignoring messages by this user'; $dmsg_bd_il = ''.$buddy_link.$ignore_link.'
'; } else { $dmsg_bd_il = ''; } /* Show im buttons if need be. */ if ($b & 16384) { $im = ''; if ($obj->icq) { $im .= ''; } if ($obj->facebook) { $im .= ''; } if ($obj->yahoo) { $im .= ''; } if ($obj->jabber) { $im .= ''; } if ($obj->google) { $im .= ''; } if ($obj->skype) { $im .= ''; } if ($obj->twitter) { $im .= ''; } if ($im) { $dmsg_im_row = ''.$im.'
'; } else { $dmsg_im_row = ''; } } else { $dmsg_im_row = ''; } } else { $user_link = $obj->user_id ? ''.$user_login.'' : ''.$user_login; $dmsg_tags = $dmsg_im_row = $dmsg_bd_il = $location = $online_indicator = $avatar = ''; } /* Display message body. * If we have message threshold & the entirity of the post has been revelead show a * preview otherwise if the message body exists show an actual body. * If there is no body show a 'no-body' message. */ if (!$hide_controls && $obj->message_threshold && $obj->length_preview && $obj->length > $obj->message_threshold && !isset($GLOBALS['__FMDSP__'][$obj->id])) { $msg_body = ''.read_msg_body($obj->offset_preview, $obj->length_preview, $obj->file_id_preview).' ...

[ Show the rest of the message ]
'; } else if ($obj->length) { $msg_body = ''.read_msg_body($obj->foff, $obj->length, $obj->file_id).''; } else { $msg_body = 'No Message Body'; } /* Draw file attachments if there are any. */ $drawmsg_file_attachments = ''; if ($obj->attach_cnt && !empty($obj->attach_cache)) { $atch = unserialize($obj->attach_cache); if (!empty($atch)) { foreach ($atch as $v) { $sz = $v[2] / 1024; $drawmsg_file_attachments .= '
  • Attachment: '.$v[1].'
    (Size: '.($sz < 1000 ? number_format($sz, 2).'KB' : number_format($sz/1024, 2).'MB').', Downloaded '.convertPlural($v[3], array(''.$v[3].' time',''.$v[3].' times')).')
  • '; } $drawmsg_file_attachments = ''; } /* Append session to getfile. */ if (_uid) { if ($o1 & 128 && !isset($_COOKIE[$GLOBALS['COOKIE_NAME']])) { $msg_body = str_replace('poll_cache) { $obj->poll_cache = unserialize($obj->poll_cache); } /* Handle poll votes. */ if (!empty($_POST['poll_opt']) && ($_POST['poll_opt'] = (int)$_POST['poll_opt']) && !($obj->thread_opt & 1) && $perms & 512) { if (register_vote($obj->poll_cache, $obj->poll_id, $_POST['poll_opt'], $obj->id)) { $obj->total_votes += 1; $obj->cant_vote = 1; } unset($_GET['poll_opt']); } /* Display poll if there is one. */ if ($obj->poll_id && $obj->poll_cache) { /* We need to determine if we allow the user to vote or see poll results. */ $show_res = 1; if (isset($_GET['pl_view']) && !isset($_POST['pl_view'])) { $_POST['pl_view'] = $_GET['pl_view']; } /* Various conditions that may prevent poll voting. */ if (!$hide_controls && !$obj->cant_vote && (!isset($_POST['pl_view']) || $_POST['pl_view'] != $obj->poll_id) && ($perms & 512 && (!($obj->thread_opt & 1) || $perms & 4096)) && (!$obj->expiry_date || ($obj->creation_date + $obj->expiry_date) > __request_timestamp__) && /* Check if the max # of poll votes was reached. */ (!$obj->max_votes || $obj->total_votes < $obj->max_votes) ) { $show_res = 0; } $i = 0; $poll_data = ''; foreach ($obj->poll_cache as $k => $v) { ++$i; if ($show_res) { $length = ($v[1] && $obj->total_votes) ? round($v[1] / $obj->total_votes * 100) : 0; $poll_data .= ' '.$i.'. '.$v[0].' '.$v[1].' / '.$length.'% '; } else { $poll_data .= ' '.$i.'. '; } } if (!$show_res) { $poll = '
    '._hs.' '.$poll_data.'
    '.$obj->poll_name.'[ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]
     '.($obj->total_votes ? '' : '' ) .'

    '; } else { $poll = '
    '.$poll_data.'
    '.$obj->poll_name.'[ '.$obj->total_votes.' '.convertPlural($obj->total_votes, array('vote','votes')).' ]

    '; } if (($p = strpos($msg_body, '{POLL}')) !== false) { $msg_body = substr_replace($msg_body, $poll, $p, 6); } else { $msg_body = $poll . $msg_body; } } /* Determine if the message was updated and if this needs to be shown. */ if ($obj->update_stamp) { if ($obj->updated_by != $obj->poster_id && $o1 & 67108864) { $modified_message = '

    [Updated on: '.print_date('%a, %d %B %Y %H:%M', $obj->update_stamp).'] by Moderator

    '; } else if ($obj->updated_by == $obj->poster_id && $o1 & 33554432) { $modified_message = '

    [Updated on: '.print_date('%a, %d %B %Y %H:%M', $obj->update_stamp).']

    '; } else { $modified_message = ''; } } else { $modified_message = ''; } if ($_GET['t'] != 'tree' && $_GET['t'] != 'msg') { $lnk = d_thread_view; } else { $lnk =& $_GET['t']; } $rpl = ''; if (!$hide_controls) { /* Show reply links, eg: [message #1 is a reply to message #2]. */ if ($o2 & 536870912) { if ($obj->reply_to && $obj->reply_to != $obj->id) { $rpl = '[message #'.$obj->id.' is a reply to message #'.$obj->reply_to.']'; } else { $rpl = '[message #'.$obj->id.']'; } } /* Little trick, this variable will only be available if we have a next link leading to another page. */ if (empty($next_page)) { $next_page = ' '; } // Edit button if editing is enabled, EDIT_TIME_LIMIT has not transpired, and there are no replies. if (_uid && ($perms & 16 || (_uid == $obj->poster_id && (!$GLOBALS['EDIT_TIME_LIMIT'] || __request_timestamp__ - $obj->post_stamp < $GLOBALS['EDIT_TIME_LIMIT'] * 60 ) && (($GLOBALS['FUD_OPT_3'] & 1024) || $obj->id == $obj->last_post_id)) ) ) { $edit_link = '    '; } else { $edit_link = ''; } if (!($obj->thread_opt & 1) || $perms & 4096) { $reply_link = ' '; $quote_link = ''; } else { $reply_link = $quote_link = ''; } } return ' '.(!$hide_controls ? '' : '' ) .'
    '.($obj->icon && !$hide_controls ? ''.$obj->icon.'  ' : '' ) .''.$obj->subject.' '.$rpl.' '.print_date('%a, %d %B %Y %H:%M', $obj->post_stamp).' '.$prev_message.$next_message.'
    '.$avatar.'
    '.$online_indicator.' '.$user_link.' '.(!$hide_controls ? ''.($obj->disp_flag_cc && $GLOBALS['FUD_OPT_3'] & 524288 ? '  '.$obj->flag_country.'' : '' ) .($obj->user_id ? '
    Messages: '.$obj->posted_msg_count.'
    Registered: '.print_date('%B %Y', $obj->join_date).' '.$location.'' : '' ) .'' : '' ) .' '.($GLOBALS['FUD_OPT_4'] & 4 && $obj->poster_id > 0 ? '
    '.($MOD ? '' : '' ) .' Karma: '.$obj->karma.' '.($MOD ? '' : '' ) .' ' : '' ) .'
    '.$dmsg_tags.' '.$dmsg_bd_il.$dmsg_im_row.(!$hide_controls ? ''.(($obj->host_name && $o1 & 268435456) ? 'From: '.$obj->host_name.'
    ' : '' ) .(($b & 1048576 || $usr->md || $o1 & 134217728) ? 'IP: '.$obj->ip_addr.'' : '' ) .'' : '' ) .'
    '.$msg_body.' '.$drawmsg_file_attachments.' '.(!$hide_controls ? ''.(($obj->sig && $o1 & 32768 && $obj->msg_opt & 1 && $b & 4096 && !($a & 67108864)) ? '

    '.$obj->sig.'
    ' : '' ) .'
    '.$modified_message.'

    Report message to a moderator

    ' : '' ) .'
    '; } ?>