680 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			680 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?
 | 
						|
/*
 | 
						|
Jorge - frontend for mod_logdb - ejabberd server-side message archive module.
 | 
						|
 | 
						|
Copyright (C) 2009 Zbigniew Zolkiewski
 | 
						|
 | 
						|
This program is free software; you can redistribute it and/or
 | 
						|
modify it under the terms of the GNU General Public License
 | 
						|
as published by the Free Software Foundation; either version 2
 | 
						|
of the License, or (at your option) any later version.
 | 
						|
 | 
						|
/This program is distributed in the hope that it will be useful,
 | 
						|
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
GNU General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with this program; if not, write to the Free Software
 | 
						|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
						|
*/
 | 
						|
 | 
						|
require_once("headers.php");
 | 
						|
require_once("upper.php");
 | 
						|
 | 
						|
if ($_GET['a']) {
 | 
						|
 | 
						|
	$jump_link = "&a=".$_GET['a'];
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_overview('<h2>'.$cal_head[$lang].'</h2><small>'.$cal_notice[$lang].'. <a href="main.php?set_pref=1&v=1'.$jump_link.'"><u>'.$change_view[$lang].'</u></a></small><br><br>');
 | 
						|
 | 
						|
if (isset($_GET['left'])) { 
 | 
						|
	
 | 
						|
		if ($enc->decrypt_url($_GET['left']) === true) {
 | 
						|
 | 
						|
				$left = $enc->tslice;
 | 
						|
 | 
						|
			}
 | 
						|
			else {
 | 
						|
 | 
						|
				unset($left);
 | 
						|
 | 
						|
		}
 | 
						|
	
 | 
						|
}
 | 
						|
 | 
						|
if (isset($_GET['right'])) { 
 | 
						|
 | 
						|
		if ($enc->decrypt_url($_GET['right']) === true) {
 | 
						|
 | 
						|
				$right = $enc->tslice;
 | 
						|
 | 
						|
			}
 | 
						|
			else {
 | 
						|
 | 
						|
				unset($left);
 | 
						|
 | 
						|
		}
 | 
						|
		
 | 
						|
}
 | 
						|
 | 
						|
$e_string = $_GET['a'];
 | 
						|
$resource_id = $_GET['b'];
 | 
						|
$start = $_GET['start'];
 | 
						|
$jump_to = $_POST['jump_box'];
 | 
						|
 | 
						|
if ($jump_to!="") { 
 | 
						|
 | 
						|
	$mo=$jump_to; 
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if ($mo === "jump") { 
 | 
						|
 | 
						|
	unset($mo); 
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if ($enc->decrypt_url($e_string) === true) {
 | 
						|
 | 
						|
	$tslice = $enc->tslice;
 | 
						|
	$talker = $enc->peer_name_id;
 | 
						|
	$server = $enc->peer_server_id;
 | 
						|
	$action = $enc->action;
 | 
						|
	$lnk = $enc->lnk;
 | 
						|
		
 | 
						|
	// reencode string:
 | 
						|
	$e_string = $enc->crypt_url("tslice=$tslice&peer_name_id=$talker&peer_server_id=$server");
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// avoid unnessesary validation, actualy...
 | 
						|
if ($tslice) {
 | 
						|
 | 
						|
	if (validate_date($tslice) === false) { 
 | 
						|
 | 
						|
			debug(DEBUG,"Date validation failed: $tslice");
 | 
						|
			unset ($tslice); 
 | 
						|
			unset($e_string); 
 | 
						|
			unset($talker); 
 | 
						|
			unset($left); 
 | 
						|
			unset($right); 
 | 
						|
			unset($mo); 
 | 
						|
			unset($action); 
 | 
						|
	
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			debug(DEBUG,"Date set to: $tslice");
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// some validation things...
 | 
						|
if ($start) { 
 | 
						|
 | 
						|
	if ((validate_start($start))!==true) { 
 | 
						|
	
 | 
						|
		$start="0";  
 | 
						|
		
 | 
						|
	}  
 | 
						|
	
 | 
						|
}
 | 
						|
 | 
						|
// set idx
 | 
						|
if ($_GET['idx']) {
 | 
						|
 | 
						|
	$idx = $_GET['idx'];
 | 
						|
 | 
						|
	if ($enc->decrypt_url($idx) === true) {
 | 
						|
 | 
						|
			if($db->set_ext_index($enc->single) !== true) {
 | 
						|
 | 
						|
				unset($idx);
 | 
						|
				unset($action);
 | 
						|
 | 
						|
			}
 | 
						|
 | 
						|
			$idx = $enc->single;
 | 
						|
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			unset($idx);
 | 
						|
			unset($action);
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// undo delete
 | 
						|
if ($action === "undelete") {
 | 
						|
 | 
						|
	if ($db->move_chat_from_trash($talker,$server,$tslice,$lnk,$idx) === true) {
 | 
						|
 | 
						|
			$html->status_message($undo_info[$lang],"message");
 | 
						|
 | 
						|
		}
 | 
						|
		else {
 | 
						|
 | 
						|
			unset($talker);
 | 
						|
			$html->alert_message($oper_fail[$lang],"message");
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if ($action === "delete") {
 | 
						|
 | 
						|
		if ($db->move_chat_to_trash($talker,$server,$tslice,$lnk) === true) {
 | 
						|
 | 
						|
				$undo = $enc->crypt_url("tslice=$tslice&peer_name_id=$talker&peer_server_id=$server&lnk=$lnk&action=undelete");
 | 
						|
				unset($talker);
 | 
						|
				$idx = $enc->crypt_url("single=".$db->get_last_idx()."");
 | 
						|
				$html->status_message('<center><div style="background-color: #fad163; text-align: center; width: 240pt;">'.$del_moved[$lang]
 | 
						|
						.'<a href="'.$view_type.'?a='.$undo.'&idx='.$idx.'"> <span style="color: blue; font-weight: bold;"><u>Undo</u></span></a></div></center>');
 | 
						|
 | 
						|
			}
 | 
						|
 | 
						|
			else {
 | 
						|
 | 
						|
				$html->alert_message($oper_fail[$lang],"message");
 | 
						|
				unset($talker);
 | 
						|
 | 
						|
			}
 | 
						|
		
 | 
						|
}
 | 
						|
 | 
						|
// check few condition, what we're doing...
 | 
						|
if ($tslice!="") {
 | 
						|
 | 
						|
		list($y,$m,$selected) = split("-", $tslice);
 | 
						|
		$mo="$y-$m";
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	else {
 | 
						|
 | 
						|
		if (isset($left)) {
 | 
						|
 | 
						|
			$mo=$left;
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		if (isset($right)) {
 | 
						|
 | 
						|
			$mo=$right;
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if (!isset($mo)) {
 | 
						|
 | 
						|
	$mo = date("Y-n");
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// validate mo if fail, silently fallback to current date
 | 
						|
if (validate_date($mo."-1") === false) { 
 | 
						|
	
 | 
						|
	unset ($tslice); 
 | 
						|
	unset ($e_string); 
 | 
						|
	unset ($talker); 
 | 
						|
	$mo = date("Y-m");  
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// master div
 | 
						|
$html->set_body('<div>');
 | 
						|
 | 
						|
// calendar div
 | 
						|
if ($talker) { 
 | 
						|
 | 
						|
		$float="left;"; 
 | 
						|
		
 | 
						|
	} 
 | 
						|
	else { 
 | 
						|
	
 | 
						|
		$float="none;"; 
 | 
						|
		
 | 
						|
}
 | 
						|
 | 
						|
// select list
 | 
						|
$db->get_user_stats_drop_down();
 | 
						|
$ch_mo = $db->result;
 | 
						|
 | 
						|
// check if user have some chats
 | 
						|
if (count($ch_mo)!=0) {
 | 
						|
 | 
						|
		$html->set_body('<div style="text-align: center; width: 200px; float: '.$float.'">
 | 
						|
			<form id="t_jump" action="calendar_view.php" method="post" name="t_jump">
 | 
						|
			<select style="text-align: center; border: 0px; background-color: #6daae7; color:#fff; font-size: x-small;" name="jump_box" size="0" onchange="javascript:document.t_jump.submit();">
 | 
						|
			<option value="jump">'.$jump_to_l[$lang].'</option>
 | 
						|
			');
 | 
						|
 | 
						|
		foreach($ch_mo as $result) {
 | 
						|
 | 
						|
			list($s_y,$s_m) = split("-",$result[at_send]);
 | 
						|
			$sym="$s_y-$s_m";
 | 
						|
 | 
						|
			if ($jump_to!="" AND $sym==$mo) { 
 | 
						|
	
 | 
						|
					$sel_box="selected"; 
 | 
						|
			
 | 
						|
				} 
 | 
						|
				else { 
 | 
						|
		
 | 
						|
					$sel_box=""; 
 | 
						|
			
 | 
						|
			}
 | 
						|
			$html->set_body('<option value="'.$sym.'" '.$sel_box.'>'.verbose_date($result[at],$months_names,$weekdays,false,true).'</option>');
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		$html->set_body('</select></form>');
 | 
						|
 | 
						|
		// now generate calendar
 | 
						|
		$db->get_user_stats_calendar($mo);
 | 
						|
		$result_for_days = $db->result;
 | 
						|
 | 
						|
		$i=0;
 | 
						|
		// days
 | 
						|
		foreach($result_for_days as $result) {
 | 
						|
 | 
						|
			$i++;
 | 
						|
			$days[$i] = str_replace("-","",$result[days]);
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		list($y,$m) = split("-", $mo);
 | 
						|
		$html->set_body(calendar($db,$user_id,$xmpp_host,$y,$m,$days,TOKEN,$url_key,$left,$right,$selected,$lang,$view_type,1,$null_a=0,$null_b=0,$cal_days,$enc,$months_names,$weekdays));
 | 
						|
		unset($days);
 | 
						|
 | 
						|
	}
 | 
						|
	else {
 | 
						|
 | 
						|
		$html->status_message($no_archives[$lang]);
 | 
						|
		
 | 
						|
}
 | 
						|
 | 
						|
// if we got day, lets display chats from that day but only if there are some
 | 
						|
if ($tslice) {
 | 
						|
 | 
						|
	$db->get_user_chats($tslice);
 | 
						|
	$result = $db->result;
 | 
						|
	if (count($result)>0) {
 | 
						|
 | 
						|
			$display_conversations = true;
 | 
						|
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			$display_conversations = false;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
if ($display_conversations === true) {
 | 
						|
	
 | 
						|
	// we need to sort list by nickname so we need to combine 2 results: roster and mod_logdb chatlist:
 | 
						|
	foreach($result as $sort_me) {
 | 
						|
		
 | 
						|
		$roster_name = query_nick_name($ejabberd_roster,$sort_me[username],$sort_me[server_name]);
 | 
						|
		$arr_key++;
 | 
						|
 | 
						|
		if (!$roster_name) {
 | 
						|
			
 | 
						|
				// split contact into 2 arrays: one with full jids, second without names - transports, agents..
 | 
						|
                        	$sorted_spec[$arr_key] = array(
 | 
						|
                                        "roster_name"=>$roster_name,
 | 
						|
                                        "username"=>$sort_me[username],
 | 
						|
                                        "server_name"=>$sort_me[server_name],
 | 
						|
                                        "todaytalk"=>$sort_me[todaytalk],
 | 
						|
                                        "server"=>$sort_me[server],
 | 
						|
                                        "lcount"=>$sort_me[lcount]
 | 
						|
                                        );
 | 
						|
			}
 | 
						|
			else {
 | 
						|
 | 
						|
                		$sorted_list[$arr_key] = array(
 | 
						|
                                	"roster_name"=>$roster_name,
 | 
						|
                                	"username"=>$sort_me[username],
 | 
						|
                                	"server_name"=>$sort_me[server_name],
 | 
						|
                                	"todaytalk"=>$sort_me[todaytalk],
 | 
						|
                                	"server"=>$sort_me[server],
 | 
						|
                                	"lcount"=>$sort_me[lcount]
 | 
						|
                                	);
 | 
						|
		}
 | 
						|
 | 
						|
	}	
 | 
						|
	// sort and split two lists: normal contacts and special contacts.
 | 
						|
	asort($sorted_list);
 | 
						|
	
 | 
						|
	if (!$show_spec) {
 | 
						|
 | 
						|
		$show_spec="1";
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	if ($sorted_spec AND $show_spec === "1") {
 | 
						|
 | 
						|
		if ($sorted_list) {
 | 
						|
		
 | 
						|
				$sorted_list = array_merge($sorted_list,$sorted_spec);
 | 
						|
 | 
						|
			}
 | 
						|
			else{
 | 
						|
 | 
						|
				$sorted_list = $sorted_spec;
 | 
						|
			
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	$html->set_body('<td valign="top" style="padding-top: 15px;">
 | 
						|
        		<table width="200" border="0" cellpadding="0" cellspacing="0" class="calbck_con">
 | 
						|
      			<tr>
 | 
						|
        			<td><img src="img/cal_corn_11.png" width="15" height="7"></td>
 | 
						|
        			<td style="background-image: url(img/cal_bck_top.gif);"></td>
 | 
						|
        			<td><img src="img/cal_corn_12.png" width="14" height="7"></td>
 | 
						|
      			</tr>
 | 
						|
      			<tr>
 | 
						|
        			<td width="15" height="226" valign="top" class="calbckleft"><img src="img/cal_bck_left.png" width="15" height="116"></td>
 | 
						|
        			<td width="100%" valign="top">
 | 
						|
					<table width="100%"  border="0" cellspacing="0" cellpadding="0">
 | 
						|
        				<tr>
 | 
						|
						<td align="center" class="calhead">'.$chat_list_l[$lang].'</td>
 | 
						|
					</tr>
 | 
						|
					<tr><td height="5"></td></tr>
 | 
						|
					<tr align="center" class="caldays">
 | 
						|
					<td><div style="vertical-align: middle; overflow: auto; height: 210; border-left: 0px; border-bottom: 0px; padding:0px; margin: 0px;">
 | 
						|
	');
 | 
						|
	
 | 
						|
	// select chatters
 | 
						|
	foreach ($sorted_list as $entry) {
 | 
						|
 | 
						|
                $user_name = $entry[username];
 | 
						|
                $server_name = $entry[server_name];
 | 
						|
                if ($talker==$entry["todaytalk"] AND $server==$entry[server]) { 
 | 
						|
 | 
						|
				$bold_b="<font color=\"#ffcc00\"><b>"; 
 | 
						|
				$bold_e="</b></font>"; 
 | 
						|
				$mrk=1; 
 | 
						|
				
 | 
						|
			} 
 | 
						|
			else { 
 | 
						|
				
 | 
						|
				$bold_b=""; 
 | 
						|
				$bold_e=""; 
 | 
						|
				$mrk=0; 
 | 
						|
				
 | 
						|
		}
 | 
						|
		
 | 
						|
		$nickname = $entry[roster_name];
 | 
						|
		if (!$nickname) { 
 | 
						|
		
 | 
						|
				$calday_class="caldays4";
 | 
						|
				$nickname = $not_in_r[$lang];
 | 
						|
				$spec_con = '<br><span style="text-indent: 10px; font-size: smaller;">(<i>'.htmlspecialchars($server_name).'</i>)</span>';
 | 
						|
				unset($malpa);
 | 
						|
				
 | 
						|
			}
 | 
						|
			else {
 | 
						|
 | 
						|
				$calday_class="caldays3";
 | 
						|
				unset($spec_con);
 | 
						|
				$malpa = "@";
 | 
						|
 | 
						|
		}
 | 
						|
		
 | 
						|
		if ($mrk==1) {
 | 
						|
 | 
						|
			$db->get_next_prev_day($entry[todaytalk],$entry[server],$tslice,"p");
 | 
						|
			$previous_t = $db->result->at;
 | 
						|
			$to_base_prev = $enc->crypt_url("tslice=$previous_t&peer_name_id=$entry[todaytalk]&peer_server_id=$entry[server]");
 | 
						|
 | 
						|
			$db->get_next_prev_day($entry[todaytalk],$entry[server],$tslice,"n");
 | 
						|
			$next_t = $db->result->at;
 | 
						|
			$to_base_next = $enc->crypt_url("tslice=$next_t&peer_name_id=$entry[todaytalk]&peer_server_id=$entry[server]");
 | 
						|
				
 | 
						|
		}
 | 
						|
 | 
						|
		$to_base2 = $enc->crypt_url("tslice=$tslice&peer_name_id=$entry[todaytalk]&peer_server_id=$entry[server]");
 | 
						|
		if ($mrk==1 AND $previous_t != NULL) { 
 | 
						|
 | 
						|
				$html->set_body('<a class="nav_np" id="pretty" title="'.$jump_to_prev[$lang].': '.$previous_t.'" href="calendar_view.php?a='.$to_base_prev.'"><<< </a>');
 | 
						|
					
 | 
						|
		}
 | 
						|
 | 
						|
		$html->set_body('<a class="'.$calday_class.'" id="pretty" href="?a='.$to_base2.'" title="JabberID:;'.htmlspecialchars($user_name).$malpa.htmlspecialchars($server_name).';---;
 | 
						|
			<b>'.$chat_lines[$lang].$entry[lcount].'</b>">'.$bold_b.cut_nick($nickname).$bold_e.'</a>');
 | 
						|
 | 
						|
		if ($mrk==1 AND $next_t != NULL) { 
 | 
						|
						
 | 
						|
			$html->set_body('<a class="nav_np" id="pretty" title="'.$jump_to_next[$lang].': '.$next_t.'" href="calendar_view.php?a='.$to_base_next.'"> >>></a>');
 | 
						|
		}
 | 
						|
 | 
						|
		if ($spec_con) {
 | 
						|
 | 
						|
			$html->set_body($bold_b.$spec_con.$bold_e);
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		$html->set_body('<br>');
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
	$html->set_body('
 | 
						|
		</div></td></tr>
 | 
						|
		</table>
 | 
						|
        	</td>
 | 
						|
        	<td width="14" valign="top" class="calbckright"><img src="img/cal_bck_right.png" width="14" height="116"></td>
 | 
						|
      		</tr>
 | 
						|
      		<tr>
 | 
						|
        	<td><img src="img/cal_corn_21.png" width="15" height="16"></td>
 | 
						|
        	<td style="background-image: url(img/cal_bck_bot.png);"></td>
 | 
						|
        	<td><img src="img/cal_corn_22.png" width="14" height="16"></td>
 | 
						|
      		</tr>
 | 
						|
    		</table>
 | 
						|
	');
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('</div><div>');
 | 
						|
 | 
						|
// Chat thread:
 | 
						|
if ($talker) {
 | 
						|
 | 
						|
        $html->set_body('<td valign="top"><table border="0" class="ff"><tr>');
 | 
						|
        if (!$start) { 
 | 
						|
		
 | 
						|
			$start="0"; 
 | 
						|
			
 | 
						|
		}
 | 
						|
	$db->get_num_lines($tslice,$talker,$server);
 | 
						|
	$nume = $db->result->cnt;
 | 
						|
        if ($start>$nume) { 
 | 
						|
	
 | 
						|
			$start=$nume-$num_lines_bro; 
 | 
						|
			
 | 
						|
		} 
 | 
						|
 | 
						|
	$db->get_user_name($talker);
 | 
						|
	$talker_name = $db->result->username;
 | 
						|
	$db->get_server_name($server);
 | 
						|
	$server_name = $db->result->server_name;
 | 
						|
	$nickname = query_nick_name($ejabberd_roster,$talker_name,$server_name);
 | 
						|
        if ($nickname === "") { 
 | 
						|
		
 | 
						|
				$nickname=$not_in_r[$lang];
 | 
						|
				$spec_mark = true;
 | 
						|
			
 | 
						|
			}
 | 
						|
			else {
 | 
						|
 | 
						|
				$spec_mark = false;
 | 
						|
 | 
						|
	}
 | 
						|
	
 | 
						|
	$predefined = $enc->crypt_url("jid=$talker_name@$server_name");
 | 
						|
 | 
						|
	$html->set_body('<table id="maincontent" border="0" cellspacing="0" class="ff">
 | 
						|
			<tr><td colspan="4"><div id="fav_result"></div>
 | 
						|
			</td></tr>
 | 
						|
		');
 | 
						|
 | 
						|
	if ($_GET['loc']) {
 | 
						|
 | 
						|
		$loc_id=$_GET['loc'];
 | 
						|
		if ($loc_id=="2") {
 | 
						|
 | 
						|
				$back_link_message=$chat_map_back[$lang];
 | 
						|
				$back_link="chat_map.php?chat_map=$predefined";
 | 
						|
			
 | 
						|
			}
 | 
						|
			elseif($loc_id=="3") {
 | 
						|
			
 | 
						|
				$back_link_message=$fav_back[$lang];
 | 
						|
				$back_link="favorites.php";
 | 
						|
			
 | 
						|
			}
 | 
						|
			elseif($loc_id=="4") {
 | 
						|
 | 
						|
				$back_link_message=$myl_back[$lang];
 | 
						|
				$back_link="my_links.php";
 | 
						|
			
 | 
						|
			}
 | 
						|
		$html->set_body('<tr><td colspan="2" class="message"><a href="'.$back_link.'">'.$back_link_message.'</a></td><td></td></tr>');
 | 
						|
	
 | 
						|
	}
 | 
						|
        if ($resource_id) {
 | 
						|
		
 | 
						|
		$db->get_resource_name($resource_id);
 | 
						|
		$res_display = $db->result->resource_name;
 | 
						|
        	$html->set_body('<tr><td colspan="4"><div style="background-color: #fad163; text-align: center; font-weight: bold;">'.$resource_warn[$lang].cut_nick(htmlspecialchars($res_display)).'. '
 | 
						|
				.$resource_discard[$lang].'<a class="export" href="?a='.$e_string.'">'.$resource_discard2[$lang].'</a></div></td></tr>');
 | 
						|
        
 | 
						|
	}
 | 
						|
	
 | 
						|
	$action_link = $enc->crypt_url("tslice=$tslice&peer_name_id=$talker&peer_server_id=$server&lnk=$e_string&action=delete");
 | 
						|
	$sess->set('export_nickname',$nickname); // pass to export
 | 
						|
	$html->set_body('
 | 
						|
        		<tr class="header">
 | 
						|
        		<td><b> '.$time_t[$lang].' </b></td><td><b> '.$user_t[$lang].' </b></td><td><b> '.$thread[$lang].'</b></td>
 | 
						|
        		<td align="right" style="padding-right: 5px; font-weight: normal;">
 | 
						|
			');
 | 
						|
 | 
						|
	// check favorite
 | 
						|
	$db->check_favorite($talker,$server,$tslice);
 | 
						|
	if ($db->result->cnt < 1) {
 | 
						|
 | 
						|
			$html->set_body('
 | 
						|
					<form style="margin-bottom: 0;" action="favorites.php" method="post">
 | 
						|
					<input type="hidden" name="a" value="'.$_GET[a].'">
 | 
						|
					<input type="hidden" name="init" value="1">
 | 
						|
					<input class="fav" type="submit" value="'.$fav_add[$lang].'">
 | 
						|
					</form>
 | 
						|
					');
 | 
						|
		}
 | 
						|
		else {
 | 
						|
 | 
						|
			$html->set_body('
 | 
						|
					<form style="margin-bottom: 0;" action="favorites.php" method="post">
 | 
						|
					<input type="hidden" name="a" value="'.$_GET[a].'">
 | 
						|
					<input type="hidden" name="init" value="1">
 | 
						|
					<i>'.$fav_favorited[$lang].'</i>
 | 
						|
					</form>
 | 
						|
					');
 | 
						|
	
 | 
						|
		
 | 
						|
		}
 | 
						|
	
 | 
						|
	$html->set_body('<a id="pretty" title="'.$tip_export[$lang].'" class="menu_chat" href="export.php?a='.$e_string.'">'.$export_link[$lang].'</a>  |  '.$all_for_u[$lang].'
 | 
						|
        		<a id="pretty" title="'.$all_for_u_m2_d[$lang].'" class="menu_chat" href="chat_map.php?chat_map='.$predefined.'"><u>'.$all_for_u_m2[$lang].'</u></a>
 | 
						|
			 <small>|</small> 
 | 
						|
			<a id="pretty" title="'.$all_for_u_m_d[$lang].'" class="menu_chat" href="search_v2.php?b='.$predefined.'"><u>'.$all_for_u_m[$lang].'</u></a>
 | 
						|
			  |  
 | 
						|
        		<a id="pretty" title="'.$tip_delete[$lang].'" class="menu_chat" href="calendar_view.php?a='.$action_link.'">'.$del_t[$lang].'</a>
 | 
						|
			</td></tr>
 | 
						|
        		<tr class="spacer"><td colspan="7"></td></tr>
 | 
						|
        		<tbody id="searchfield">
 | 
						|
	');
 | 
						|
 | 
						|
	if($db->get_user_chat($tslice,$talker,$server,$resource_id,$start,$num_lines_bro) === false) {
 | 
						|
 | 
						|
			$html->alert_message($oper_fail[$lang]);
 | 
						|
 | 
						|
	}
 | 
						|
	// processing messages. this should be handled as separate message_processor, so that tree view and calendar view can share the same code withoud redundancy. To be done in 2.0
 | 
						|
	$result = $db->result;
 | 
						|
 | 
						|
	// some strings to pass to message_processor
 | 
						|
	$lang_pack = array(
 | 
						|
				$cont_chat_p[$lang],
 | 
						|
				$message_type_message[$lang],
 | 
						|
				$message_type_error[$lang],
 | 
						|
				$message_type_headline[$lang],
 | 
						|
				$resource_only[$lang],
 | 
						|
				$muc_message[$lang],
 | 
						|
				$my_links_save[$lang],
 | 
						|
				$verb_h[$lang],
 | 
						|
				$in_min[$lang],
 | 
						|
				$cont_chat[$lang]
 | 
						|
			);
 | 
						|
 | 
						|
	// Sent all data to parsing function (message processor)
 | 
						|
	if (message_processor($tslice,$server_name,$start,$nickname,$result,$db,$html,$enc,TOKEN,$split_line,$lang_pack,$lang,$spec_mark,$e_string,$to_base_prev,$to_base_next) !== true) {
 | 
						|
 | 
						|
			$html->alert_message($oper_fail[$lang]);
 | 
						|
			$html->destroy_content();
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	// limiting code
 | 
						|
	$html->set_body('<tr class="spacer"><td colspan="7"></td></tr><tr class="foot"><td style="text-align: center;" colspan="9">');
 | 
						|
 | 
						|
	for($i=0;$i < $nume;$i=$i+$num_lines_bro){
 | 
						|
 | 
						|
        	if ($i!=$start) {
 | 
						|
 | 
						|
            			if ($resource_id) { 
 | 
						|
			
 | 
						|
						$add_res="&b=$resource_id"; 
 | 
						|
					} 
 | 
						|
					else { 
 | 
						|
			
 | 
						|
						$add_res=""; 
 | 
						|
				}
 | 
						|
 | 
						|
            			$html->set_body('<a class="menu_chat" href="?a='.$e_string.$add_res.'&start='.$i.'"> <b>['.$i.']</b> </font></a>');
 | 
						|
            		}
 | 
						|
 | 
						|
            		else { 
 | 
						|
	    
 | 
						|
	    			$html->set_body('<span style="color: #fff;">-'.$i.'-</span> '); 
 | 
						|
		
 | 
						|
		}
 | 
						|
	
 | 
						|
	}
 | 
						|
 | 
						|
	$html->set_body('</td></tr>');
 | 
						|
	// limiting code - end
 | 
						|
 | 
						|
        if (($nume-$start)>40) { 
 | 
						|
 | 
						|
			$html->set_body('<tr><td colspan="6" style="text-align: right; padding-right: 5px;"><a href="#top"><small>'.$back_t[$lang].'</small></a></td></tr>');
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
        $html->set_body('</table></tr></table></td>');
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('</div></div>');
 | 
						|
 | 
						|
require_once("footer.php");
 | 
						|
?> 
 |