153 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.0 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");
 | |
| 
 | |
| $html->set_overview('<h2>'.$chat_map[$lang].'</h2>'.'<small>'.$chat_select[$lang].'</small>');
 | |
| 
 | |
| if ($_POST['chat_map']) {
 | |
| 		
 | |
| 		$con_map = $enc->decrypt_url($_POST['chat_map']);
 | |
| 
 | |
| 	}
 | |
| 	elseif ($_GET['chat_map']) {
 | |
| 
 | |
| 		$con_map = $enc->decrypt_url($_GET['chat_map']);
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| if($con_map === true) {
 | |
| 
 | |
| 		$con_map = $enc->jid;
 | |
| 	}
 | |
| 	else{
 | |
| 
 | |
| 		unset($con_map);
 | |
| }
 | |
| 	
 | |
| // prepare roster object
 | |
| $ejabberd_roster->sort_by_nick("az");
 | |
| $roster_chat = $ejabberd_roster->get_roster();
 | |
| 
 | |
| $html->set_body('<br><br><br>
 | |
| 		<form id="c_map_form" action="chat_map.php" method="post" name="chat_map_form">
 | |
| 		<p>'.$filter_tip[$lang].'</p>
 | |
| 		<span style="padding-right: 20px">'.$chat_m_select[$lang].'</span>
 | |
| 		<select id="c_map" style="text-align: center; border: 0px; background-color: #6daae7; color:#fff; font-size: x-small;" name="chat_map" size="0" onchange="javascript:document.chat_map_form.submit();">
 | |
| 		<option value="null">'.$chat_c_list[$lang].'</option>
 | |
| 	');
 | |
| 
 | |
| 	while (array_keys($roster_chat)) {
 | |
| 		
 | |
| 		$jid = key($roster_chat);
 | |
| 		$roster_item = array_shift($roster_chat);
 | |
| 		$name = $roster_item[nick];
 | |
| 		$grp  = $roster_item[group];
 | |
| 		if ($con_map==$jid) { 
 | |
| 		
 | |
| 				$selected="selected"; 
 | |
| 				
 | |
| 			} 
 | |
| 			else { 
 | |
| 			
 | |
| 				$selected=""; 
 | |
| 				
 | |
| 		}
 | |
| 		
 | |
| 		$html->set_body('<option '.$selected.' value=\''.$enc->crypt_url("jid=$jid").'\'>'.htmlspecialchars($name).' ('.htmlspecialchars($grp).')</option>');
 | |
| 
 | |
| 	}
 | |
| 
 | |
| $html->set_body('</select></form>');
 | |
| 
 | |
| if ($con_map AND $_POST['chat_map'] != "null") {
 | |
| 
 | |
| 	// split username and server name
 | |
| 	list($name_peer,$server_peer) = split("@",$con_map);
 | |
| 
 | |
| 	// get the id's of user and server
 | |
| 	$db->get_user_id($name_peer);
 | |
| 	$peer_name_id = $db->result->user_id;
 | |
| 	$db->get_server_id($server_peer);
 | |
| 	$peer_server_id = $db->result->server_id;
 | |
| 
 | |
| 	if ($peer_name_id !== null AND $peer_server_id !== null) {
 | |
| 	
 | |
| 		//first get the months
 | |
| 		$db->get_chat_map($peer_name_id,$peer_server_id);
 | |
| 		$result1 = $db->result;
 | |
| 		$cc_cmp = count($result1);
 | |
| 		foreach ($result1 as $row_m) {
 | |
| 
 | |
| 			// hack for proper date parsing
 | |
| 			list($y,$m) = split("-",$row_m[at]);
 | |
| 			$mo="$y-$m";
 | |
| 		
 | |
| 			// now get the days in with user was talking
 | |
| 			$db->get_chat_map_specyfic($peer_name_id,$peer_server_id,$mo);
 | |
| 			$result2 = $db->result;
 | |
| 			
 | |
| 			foreach($result2 as $row_day) {
 | |
| 
 | |
| 					// now scan day for chats, yep thats weak, but as long as we dont have right stats table this will work...
 | |
| 					$i++;
 | |
| 					list($y,$m,$d) = split("-",$row_day[at]);
 | |
| 					$days[$i] = $d;
 | |
| 			}
 | |
| 
 | |
| 			if (count($days)>=1) {
 | |
| 				
 | |
| 					$html->set_body('<table cellpadding="0" cellspacing="0" style="display:inline;"><tr><td style="width:200px; border: 0px; text-align:center;">');
 | |
| 					$html->set_body(calendar($db,$user_id,$xmpp_host,$y,$m,$days,TOKEN,$url_key,$left,$right,$selected,$lang,$view_type,2,$peer_name_id,$peer_server_id,$cal_days,$enc,$months_names,$weekdays));
 | |
| 					$html->set_body('</td></tr></table>');
 | |
| 					unset($days);
 | |
| 				
 | |
| 				}
 | |
| 			else {
 | |
| 			
 | |
| 				$score++;
 | |
| 
 | |
| 			}
 | |
| 		$i=0;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	else {
 | |
| 
 | |
| 		$cc_cmp = $score;
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	if ($score==$cc_cmp) { 
 | |
| 
 | |
| 		$html->set_body('<span style="text-align: center;"><h2>'.$chat_no_chats[$lang].'</h2></span>');
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| $html->set_body('<br><small><i>*-'.$ff_notice[$lang].'</i></small>');
 | |
| require_once("footer.php");
 | |
| ?>
 |