331 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			331 lines
		
	
	
		
			8.6 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");
 | 
						|
 | 
						|
$tgle = $_POST['toggle'];
 | 
						|
$vspec = $_POST['v_spec'];
 | 
						|
 | 
						|
// Check post data. Compare them to session info.
 | 
						|
if ($_POST['del_all'] OR $_POST['erase_confirm']) {
 | 
						|
 | 
						|
	debug(DEBUG,"Processing archive removal:");
 | 
						|
	if ($sess->get('validate_number') !== $_POST['validate_form']) {
 | 
						|
 | 
						|
			debug(DEBUG," - Invalid control number, destroying POST data. Control should be: ".$sess->get('validate_number'));
 | 
						|
			unset($_POST);
 | 
						|
			$html->alert_message($oper_fail[$lang]);
 | 
						|
		
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			debug(DEBUG," - POST data seems to be ok.");
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Generate new control data for forms
 | 
						|
$set_control = md5(rand(10000,10000000));
 | 
						|
$sess->set("validate_number",$set_control);
 | 
						|
debug(DEBUG,"Setting new control data: $set_control");
 | 
						|
 | 
						|
// toggle message saving
 | 
						|
if ($tgle) { 
 | 
						|
 | 
						|
	debug(DEBUG,"Trying to change archiving option");
 | 
						|
	if ($tgle === $arch_on[$lang]) {
 | 
						|
				
 | 
						|
				if($db->set_log(true) === true) {
 | 
						|
 | 
						|
						$sess->set('log_status',true);
 | 
						|
						$db->set_logger("7","1");
 | 
						|
						$html->status_message($status_msg2[$lang]);
 | 
						|
					
 | 
						|
					}
 | 
						|
					else{
 | 
						|
						
 | 
						|
						$html->alert_message($oper_fail[$lang]);
 | 
						|
					
 | 
						|
					}
 | 
						|
 | 
						|
		}
 | 
						|
		elseif($tgle === $arch_off[$lang]) {
 | 
						|
				
 | 
						|
				if($db->set_log(false) === true) {
 | 
						|
 | 
						|
						$sess->set('log_status',false);
 | 
						|
						$db->set_logger("6","1");
 | 
						|
						$html->status_message($status_msg3[$lang]);
 | 
						|
						$html->system_message($status_msg1[$lang]);
 | 
						|
					
 | 
						|
					}
 | 
						|
					else{
 | 
						|
 | 
						|
						$html->alert_message($oper_fail[$lang]);
 | 
						|
 | 
						|
					}
 | 
						|
 | 
						|
		}
 | 
						|
}
 | 
						|
 | 
						|
// Control diplaying of special contacs
 | 
						|
if ($vspec) {
 | 
						|
 | 
						|
	if ($db->set_jorge_pref("3",$vspec) === true) {
 | 
						|
 | 
						|
			$html->status_message($con_saved[$lang]);
 | 
						|
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			$html->alert_message($oper_fail[$lang]);
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// delete entire archive
 | 
						|
if ($_POST['erase_confirm'] === "true") {
 | 
						|
 | 
						|
	if ($_POST['del_all'] === $settings_del[$lang]) {
 | 
						|
 | 
						|
		debug(DEBUG," - Trying to erase all message archives");
 | 
						|
		if ($db->erase_all() === true) {
 | 
						|
 | 
						|
				$html->status_message($deleted_all[$lang]);
 | 
						|
				$db->set_logger("9","2");
 | 
						|
				debug(DEBUG," - DONE");
 | 
						|
 | 
						|
			}
 | 
						|
			else{
 | 
						|
	
 | 
						|
				$html->alert_message($delete_error[$lang]);
 | 
						|
				debug(DEBUG," - FAILED");
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// set own name
 | 
						|
if ($_POST['own_name_value']) {
 | 
						|
 | 
						|
		// Validation is done by class, so we pass values there...
 | 
						|
		if ($db->set_own_name($_POST['own_name_value']) === true) {
 | 
						|
 | 
						|
				$html->status_message($con_saved[$lang]);
 | 
						|
 | 
						|
			}else{
 | 
						|
 | 
						|
				$html->alert_message($oper_fail[$lang]);
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_overview('<h2>'.$settings_desc[$lang].'</h2><small>'.$settings_desc_detail[$lang].'</small>');
 | 
						|
$html->set_body('<center><table><form action="settings.php" method="post">
 | 
						|
		<tr style="font-size: x-small;"><td>'.$setting_d1[$lang].'</td><td><input class="settings" type="submit" name="toggle" value="');
 | 
						|
$db->is_log_enabled();
 | 
						|
if ($db->result->is_enabled === false) { 
 | 
						|
		
 | 
						|
		$html->set_body($arch_on[$lang]);
 | 
						|
		
 | 
						|
	} 
 | 
						|
	else { 
 | 
						|
		
 | 
						|
		$html->set_body($arch_off[$lang]);
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
$html->set_body('"></td></tr></form>');
 | 
						|
 | 
						|
$html->set_body('<form action="settings.php" method="post">
 | 
						|
	<tr style="font-size: x-small;"><td>'.$setting_d2[$lang].'</td>
 | 
						|
	<td>
 | 
						|
		<input class="settings" type="submit" name="del_all" value="'.$settings_del[$lang].'" onClick="if (!confirm(\''.$del_all_conf[$lang].'\')) return false;">
 | 
						|
		<input type="hidden" name="erase_confirm" value="true">
 | 
						|
		<input type="hidden" name="validate_form" value="'.$set_control.'">
 | 
						|
	</td>
 | 
						|
	</tr>
 | 
						|
	</form>
 | 
						|
	');
 | 
						|
 | 
						|
if ($db->get_jorge_pref("3") === false) {
 | 
						|
 | 
						|
	$html->alert_message($oper_fail[$lang]);
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$special_select = $db->result->pref_value;
 | 
						|
 | 
						|
if ($special_select === "2") {
 | 
						|
 | 
						|
		$n_is_sel = "selected";
 | 
						|
 | 
						|
	}
 | 
						|
	else{
 | 
						|
 | 
						|
		$y_is_sel = "selected";
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('
 | 
						|
 | 
						|
	<form action="settings.php" method="post" name="tggle_special">
 | 
						|
	<tr style="font-size: x-small;"><td>'.$spec_contact_enable[$lang].'(<a href="#" title="'.$spec_contact_desc[$lang].'">?</a>)</td>
 | 
						|
	<td><select class="settings" name="v_spec" size="0" onchange="javascript:document.tggle_special.submit();">
 | 
						|
	<option '.$y_is_sel.' value="1">'.$sel_yes[$lang].'</option>
 | 
						|
	<option '.$n_is_sel.' value="2">'.$sel_no[$lang].'</optin>
 | 
						|
	</select>
 | 
						|
	</td></tr></form>
 | 
						|
 | 
						|
');
 | 
						|
 | 
						|
$html->set_body('<form action="settings.php" method="get" name="save_pref">
 | 
						|
	<tr style="font-size: x-small;"><td>'.$select_view[$lang].'</td>
 | 
						|
	<td><select class="settings" name="v" onchange="javascript:document.save_pref.submit();">
 | 
						|
');
 | 
						|
 | 
						|
if ($sess->get('view_type') == "1") { 
 | 
						|
 | 
						|
		$std="selected"; 
 | 
						|
		
 | 
						|
	} 
 | 
						|
	else { 
 | 
						|
	
 | 
						|
		$cal="selected"; 
 | 
						|
		
 | 
						|
}
 | 
						|
$html->set_body('
 | 
						|
	<option '.$std.' value="1">'.$view_standard[$lang].'</option>
 | 
						|
	<option '.$cal.' value="2">'.$view_calendar[$lang].'</optin>
 | 
						|
	</select>
 | 
						|
	<input name="set_pref" type="hidden" value="1">
 | 
						|
	<input name="ref" type="hidden" value="settings">
 | 
						|
	</td></tr>
 | 
						|
	</form>
 | 
						|
');
 | 
						|
 | 
						|
$html->set_body('<form action="settings.php" method="get" name="save_pref_lang">
 | 
						|
	<tr style="font-size: x-small;"><td>'.$sel_language[$lang].'</td>
 | 
						|
	<td><select class="settings" name="lng_sw" onchange="javascript:document.save_pref_lang.submit();">
 | 
						|
');
 | 
						|
 | 
						|
while (array_keys($language_support)) {
 | 
						|
 | 
						|
	$lang_key = key($language_support);
 | 
						|
	if ($sess->get('language') === $language_support[$lang_key][0]) {
 | 
						|
 | 
						|
			$pol_sel="selected";
 | 
						|
		
 | 
						|
		}
 | 
						|
		else{
 | 
						|
 | 
						|
			unset($pol_sel);
 | 
						|
 | 
						|
	}
 | 
						|
	$html->set_body('<option '.$pol_sel.' value="'.$language_support[$lang_key][1].'">'.$lang_key.'</option>');
 | 
						|
	array_shift($language_support);
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('
 | 
						|
	</select>
 | 
						|
	<input name="set_pref" type="hidden" value="2">
 | 
						|
	<input name="ref" type="hidden" value="settings">
 | 
						|
	</td></tr></form>
 | 
						|
');
 | 
						|
 | 
						|
$html->set_body('<form action="settings.php" method="post" name="set_own_name">
 | 
						|
	<tr style="font-size: x-small;"><td>'.$own_name_enter[$lang].'(<a href="#" title="'.$own_name_desc[$lang].'">?</a>)</td>
 | 
						|
	<td>
 | 
						|
	<input name="own_name_value" class="settings" type="text" value="');
 | 
						|
 | 
						|
// Check if own_name is set.
 | 
						|
$db->get_own_name();
 | 
						|
$own_name = $db->result->own_name;
 | 
						|
if (!$own_name) {
 | 
						|
 | 
						|
		$html->set_body(TOKEN);
 | 
						|
 | 
						|
	}
 | 
						|
	else{
 | 
						|
 | 
						|
		$html->set_body(htmlspecialchars($own_name));
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('" maxlength="60">
 | 
						|
	<input class="settings" type="submit" value="'.$own_name_commit[$lang].'">
 | 
						|
	</td>
 | 
						|
	</tr></form>');
 | 
						|
 | 
						|
$html->set_body('</table><hr size="1" noshade="noshade" style="color: #c9d7f1;"><br><small><b>'.$stats_personal_d[$lang].'</b></small>');
 | 
						|
 | 
						|
$db->get_personal_sum();
 | 
						|
$total_messages = number_format($db->result->cnt);
 | 
						|
 | 
						|
$html->set_body('<p style="font-size: x-small;">'.$stats_personal[$lang].'<b> '.$total_messages.'</b></p><small><b>'.$stats_personal_top[$lang].'</b></small><br><br>');
 | 
						|
 | 
						|
$db->get_personal_top();
 | 
						|
$results = $db->result;
 | 
						|
 | 
						|
if (count($results)!=0) {
 | 
						|
 | 
						|
		$html->set_body('<table bgcolor="#ffffff" class="ff" cellspacing="0" cellpadding="3">
 | 
						|
				<tr style="background-image: url(img/bar_new.png); background-repeat:repeat-x; color: #fff; font-weight: bold;">
 | 
						|
				<td>'.$stats_personal_count[$lang].'</td><td style="text-align: center;">'.$stats_peer[$lang].'</td><td>'.$stats_when[$lang].'</td></tr>
 | 
						|
			');
 | 
						|
 | 
						|
		foreach ($results as $result) {
 | 
						|
 | 
						|
			$db->get_user_name($result[peer_name_id]);
 | 
						|
			$user_name = $db->result->username;
 | 
						|
			$db->get_server_name($result[peer_server_id]);
 | 
						|
			$server_name = $db->result->server_name;
 | 
						|
			$nickname=query_nick_name($ejabberd_roster,$user_name,$server_name);
 | 
						|
			$to_base = $enc->crypt_url("tslice=$result[at]&peer_name_id=$result[peer_name_id]&peer_server_id=$result[peer_server_id]");
 | 
						|
			$html->set_body('
 | 
						|
				<tr><td style="text-align: center; font-weight: bold;">'.$result[count].'</td><td><b>'.$nickname.'</b> 
 | 
						|
				<small>('.htmlspecialchars($user_name).'@'.htmlspecialchars($server_name).')</small>
 | 
						|
				</td><td><a id="pretty" title="'.$stats_see[$lang].'" href="'.$view_type.'?a='.$to_base.'"><u>'.$result[at].'</u></a></td></tr>
 | 
						|
			');
 | 
						|
 | 
						|
		}
 | 
						|
 | 
						|
		$html->set_body('<tr height="15" style="background-image: url(img/bar_new.png); background-repeat:repeat-x; color: #fff;"><td colspan="3"></td></tr></table>');
 | 
						|
 | 
						|
	}
 | 
						|
	else {
 | 
						|
 | 
						|
		$html->set_body('<div class="message">'.$no_archives[$lang].'</div>');
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
$html->set_body('</center>');
 | 
						|
require_once("footer.php");
 | 
						|
?>
 |