Просмотр файла classes.php

Размер файла: 25.58Kb
<?
#######################################################
#                раздача ICQ номерков                 #
#                                                     #
#             	 Автор  :  Неизвестен                 #
#                Автор модификации : Дальше...        #
#               E-mail  :  [email protected]             #
#                  ICQ  :  362548079                  #
#                                                     #
#   		По всем вопросам пишите в ICQ.            #
#######################################################

include_once("mysql.php");
include_once("myprefs.php");




$sysprefs=array(
"ICQ_NUMS" => "Сколько ICQ может брать пользователь (max=100, 0=бесконечно)",
"IP_TIME" => "Время актуальности IP-адреса(часов) (max=72, 0=бесконечно)",
"SITE_NAME" => "Название сайта (для использование в письмах пользователям)",
"ADMIN_EMAIL" => "E-mail администратора, с которого слать письма"
);


$viewprefs=array(
"ICQ_LIST_MESSAGE"=>"Сообщение над списком ICQ",
"ICQ_LIST_IPERRORMESSAGE"=>"Сообщение, если пользователь уже брал ICQ с данного IP",
"ICQ_LIST_STYLE"=>"Стиль номера в списке ICQ",
"CAPTION_MESSAGE_STYLE"=>"Стиль заглавного сообщения в формах",
"POSITIVE_STYLE"=>"Стиль положительного ответа",
"NEGATIVE_STYLE"=>"Стиль отрицательного ответа",
"BUTTONS_STYLE"=>"Стиль кнопок",
"FIELDS_STYLE"=>"Стиль полей",
"TABLE_WIDTH"=>"Ширина области вывода",
"TABLE_BGCOLOR"=>"Цвет фона области вывода"
);


define("CLASS_KEYWORD","class:");

class OutTempl 
	{
	var $prefs;
	
	function OutTempl()
		{
		$this->prefs=new MyPrefsList;
		}
	
	function GetStyle($prefname)
		{
		$str=$this->prefs->GetPref($prefname);
		if (strpos($str,CLASS_KEYWORD)!==FALSE) return "class=".substr($str,strlen(CLASS_KEYWORD))."";
		else return "style=\"$str\"";
		}
	
	function PrintTempl($caption, $center, $actions, $form=false)
		{
		echo '
		<table cellspacing=0 cellpadding=0 border=0 width=100% height=100% bgcolor="'.$this->prefs->GetPref('TABLE_BGCOLOR').'"><tr><td width=100% height=100% valign=top align=left>
		<table cellspacing=0 cellpadding=4 border=0 width="'.$this->prefs->GetPref('TABLE_WIDTH').'">';
		if ($form) echo '<form method=POST>';
		echo '<tr>
			<td '.$this->GetStyle('CAPTION_MESSAGE_STYLE').' align=center>'.$caption.'</td>
		</tr>
		<tr>
			<td '.$this->GetStyle('ICQ_LIST_STYLE').' align=center>'.$center.'</td>
		</tr>
		<tr>
			<td align=center>'.$actions.'</td>
		</tr>';
		if ($form) echo '</form>';
		echo '</table>
		</td></tr></table>';
		}
	
	function PrintMessage($message, $negative=false, $caption=NULL)
		{
		echo '
		<table cellspacing=0 cellpadding=0 border=0 width=100% height=100% bgcolor="'.$this->prefs->GetPref('TABLE_BGCOLOR').'"><tr><td width=100% height=100% valign=top align=left>
		<table cellspacing=0 cellpadding=4 border=0 width="'.$this->prefs->GetPref('TABLE_WIDTH').'">';
		if ($caption) 
			{
			echo'
			<tr>
				<td '.$this->GetStyle('CAPTION_MESSAGE_STYLE').' align=center>'.$caption.'</td>
			</tr>';
			}
		echo '
		<tr>
			<td ';
		if ($negative) echo $this->GetStyle('NEGATIVE_STYLE');
		else echo $this->GetStyle('POSITIVE_STYLE');
		echo ' align=center>'.$message.'</td>
		</tr>
		</table>
		</td></tr></table>';
		}
	
	}

class ICQList
	{
	var $prefs;
	var $templ;
	
	function ICQList()
		{
		$this->prefs=new MyPrefsList;
		$this->templ=new OutTempl;
		}
	
	function GetStyle($prefname)
		{
		$str=$this->prefs->GetPref($prefname);
		if (strpos($str,CLASS_KEYWORD)!==FALSE) return "class=".substr($str,strlen(CLASS_KEYWORD))."";
		else return "style=\"$str\"";
		}
		
	function IsNumFree($num) 
		{
		if (!$num) return false;
		if ($res=mysql_query("SELECT * FROM icqlist WHERE `icq`='$num'"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				if ($arr['userid']==-1&&$arr['active']==1) return $arr['pass'];
				}
			}
		return false;
		}
		
	function IsNumExists($num) 
		{
		if (!$num) return false;
		if ($res=mysql_query("SELECT * FROM icqlist WHERE `icq`='$num'"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				return $arr['pass'];
				}
			}
		return false;
		}
	
	function GetData($num) 
		{
		if (!$num) return false;
		if ($res=mysql_query("SELECT * FROM icqlist LEFT JOIN icqusers ON icqlist.userid=icqusers.id WHERE `icq`='$num'"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				return array('pass'=>$arr['pass'],'email'=>$arr['email']);
				}
			}
		return false;
		}
		
	function CanGetByEmail($email) 
		{
		if (!$email) return false;
		if ($res=mysql_query("SELECT count FROM icqusers LEFT JOIN icqlist ON icqusers.id=icqlist.userid WHERE email='$email'"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				if ($arr[0]>=$this->prefs->GetPref('ICQ_NUMS')) return false;
				}
			return true;
			}
		return false;
		}
		
	function CanShowList() 
		{
		if ($res=mysql_query("SELECT `ip` FROM `icqusers` WHERE `ip`=\"".$_SERVER['REMOTE_ADDR']."\" AND `time`>".(time()-$this->prefs->GetPref('IP_TIME')*3600)))
			{
			if (mysql_num_rows($res)>0) return false;
			else return true;
			}
		else return false;
		}
	
	function PrintICQList()
		{
//		if ($this->CanShowList())
//			{
			if ($res=mysql_query('SELECT * FROM icqlist WHERE userid=-1 AND active=1'))
				{
				$first=true;
				$c.='<table cellspacing=0 cellpadding=0 border=0>';
				while ($arr=mysql_fetch_array($res))
					{
					$c.='<tr><td width=50% align=right><input type=radio name=icq_num value="'.$arr['icq'].'" ';
					if ($first) 
						{
						$c.='CHECKED';
						$first=false;
						}
					$c.='></td><td width=50% align=left><font '.$this->GetStyle('ICQ_LIST_STYLE').'>'.$arr['icq'].'</font></td></tr>';
					}
				$c.='</table>';
				}
			if ($first) $c.='нет больше номеров';
			if (!$first) $act='<input type=submit name=icq_submit value="Взять номер" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
			$act.='<input type=submit name=icq_remind value="Забыл пароль?" '.$this->GetStyle('BUTTONS_STYLE').'>';
			
			$this->templ->PrintTempl($this->prefs->GetPref('ICQ_LIST_MESSAGE'),$c,$act,true);
//			}
//		else
//			{
//			$this->templ->PrintMessage($this->prefs->GetPref('ICQ_LIST_IPERRORMESSAGE'),true);
//			}
		}
		
	function PrintEmailForm($icqnum,$email=NULL,$remind=false)
		{
		$c='<input type=text name=email value="'.$email.'" '.$this->GetStyle('FIELDS_STYLE').'><br>
			<input type=hidden name=icq_num value="'.$icqnum.'">';
		if (!$email) $capt='Введите Ваш e-mail<small>(на него придет пароль и номер)</small>:';
		else $capt='E-mail введен неверно, повторите ввод:';
		if (!$remind) $act='<input type=submit name=email_submit value="Продолжить" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
		else $act='<input type=submit name=email_remind_submit value="Продолжить" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
		$act.='<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>';
		$this->templ->PrintTempl($capt,$c,$act,true);
		}
		
	function PrintUserICQ($email=NULL)
		{
		if (!$email) return false;
		if ($res=mysql_query("SELECT * FROM icqlist INNER JOIN icqusers ON icqlist.userid=icqusers.id WHERE icqusers.email='$email'"))
			{
			$first=true;
			$c.='<table cellspacing=0 cellpadding=0 border=0>';
			while ($arr=mysql_fetch_array($res))
				{
				$nums[]=$arr['icq'];
				$c.='<tr><td width=50% align=right><input type=radio name=icq_num value="'.$arr['icq'].'" ';
				if ($first) 
					{
					$c.='CHECKED';
					$first=false;
					}
				$c.='></td><td width=50% align=left><font '.$this->GetStyle('ICQ_LIST_STYLE').'>'.$arr['icq'].'</font></td></tr>';
				}
			$c.='</table>';
			}
		if ($first) $c.='нет в базе';
		$capt='Полученные Вами ICQ';
		if (!$first) $act='<input type=submit name=remind_submit value="Напомнить пароль" '.$this->GetStyle('BUTTONS_STYLE').'><font style="font-size: 1px;"><br><br></font>';
		$act.='<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>';
		$act.='<input type=hidden name=email value="$email">';
		$this->templ->PrintTempl($capt,$c,$act,true);
		}
	
	function SendPass($num,$pass,$email)
		{
		$message="Вы заказали ICQ на сайте \"".$this->prefs->GetPref('SITE_NAME')."\"\n Номер: $num\n Пароль: $pass\n С уважением, Администрация сайта\n
		PS. Администрация не гарантирует, что все номерки рабочие.";
		$subject="ICQ с сайта ".$this->prefs->GetPref('SITE_NAME');
		$message=convert_cyr_string($message,w,k);
		$subject=convert_cyr_string($subject,w,k);
		$headers="From: ".$this->prefs->GetPref('ADMIN_EMAIL')."\nContent-Type: text/plain; charset=cp1251\n";
		return @mail($email,$subject,$message, $headers);
		}
	
	function SaveHit($email,$ip,$icq)
		{
		if (!$email||!$ip||!$icq) return false;
		if ($res=mysql_query("SELECT * FROM icqusers WHERE `email`='$email'"))
			{
			if ($arr=mysql_fetch_array($res)) 
				{
				$id=$arr['id'];
				
				mysql_query("UPDATE icqusers SET `ip`='".$ip."', `time`='".time()."', `count`='".($arr['count']+1)."' WHERE `id`=$id");
				}
			else // Нужно добавлять
				{
				// Добавляем
				mysql_query("INSERT INTO icqusers (`ip`,`email`,`time`,`count`) VALUES ('$ip','$email','".time()."',1)");
				$id=mysql_insert_id();
				}
			if ($id&&mysql_query("UPDATE icqlist SET `userid`=$id, `active`=0 WHERE `icq`=$icq")) return true;
			}
		return false;
		}
	
	function GetICQ($num,$email)
		{
		if (!$num||!$email) return false;
		if ($pass=$this->IsNumFree($num)) 
			{
			$this->SaveHit($email,$_SERVER['REMOTE_ADDR'],$num); 
			$this->SendPass($num,$pass,$email); 
			$this->templ->PrintMessage("Пароль от ICQ номер $num был отправлен на Ваш e-mail $email", false ,'Поздравляем!');
			}
		else
			{
			$this->templ->PrintTempl('','<font '.$this->GetStyle('NEGATIVE_STYLE').'>Выбранный Вами номер уже взят кем-то другим. Попробуйте выбрать другой номер.</font>', '<input type=submit name=back value="Назад" '.$this->GetStyle('BUTTONS_STYLE').'>', true);
			}
		}
	
	}
	
	

	
	
class AdminTempl 
	{
	var $theader;
	var $tfooter;
	
	function SetHF($caption, $selmenuitem, $state)
		{
		$menuitems=array(
		array('capt'=>'Раздача ICQ', 'itemlink'=>'admin.php'),
		array('capt'=>'Пользователи', 'itemlink'=>'admin_users.php'),
		array('capt'=>'Настройки', 'itemlink'=>'admin_prefs.php')
		);
		if (!isset($caption)) $caption="Раздача асек";
		if (!isset($selmenuitem)) $selmenuitem=0;
		if (!isset($state)) $state='ok';
		
		$this->theader="<html>
<head>
<title>$caption</title>
<style type=\"text/css\">
<!--
body {
	font: 10pt arial tahoma verdana sans-serif;
	background-color: #ffffff;
	margin: 2px;
	text-align: left;
}

table {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 8pt;
}

a.menu {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: underline;
	font-size: 10pt;
	font-weight: bold;
}

a.menu:hover {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 10pt;
	font-weight: bold;
}

.menu {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 10pt;
}

input {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 8pt;
}

textarea {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 8pt;
}

a {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: underline;
	font-weight: bold;
	font-size: 8pt;
}
a:hover {
	color: #dd2200;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-weight: bold;
	font-size: 8pt;
}

.sel {
	color: #333333;
	font-family: Tahoma,Verdana;
	text-decoration: none;
	font-size: 8pt;
	width: 150;
}
-->
</style>
<SCRIPT LANGUAGE=\"javascript\">
function AutoCheck(chname)
	{
	document.listform.chname.checked=true;
	}
</script>
			</head>
			
			<body>
			<table cellspacing=1 cellpadding=2 border=0 width=100%>
			<tr>
				<td bgcolor=CCCCFF class=menu align=center>
				<b>Меню:</b> ";
		foreach ($menuitems as $menuitem)
			{
			if ($menuitems[$selmenuitem]!=$menuitem) $this->theader.='[ <a href="'.$menuitem['itemlink'].'">'.$menuitem['capt'].'</a> ]&nbsp;&nbsp;';
			else $this->theader.='[ '.$menuitem['capt'].' ]&nbsp;&nbsp;';
			}
		$this->theader.="
				</td>
			</tr>
			<tr>
				<td>
				<br>
";
		$this->tfooter="<br></td>
			</tr>
			<tr>
				<td bgcolor=CCCCFF align=left>
				<b>Состояние:</b> $state
				</td>
			</tr>
			<tr>
				<td align=right>
				by <a href=mailto:[email protected]>Stepanov Victor</a>
				</td>
			</tr>
			</table>
			
</body></html>";
		}
	
	function PrintTempl($caption, $selmenuitem, $state, $center)
		{
		$this->SetHF($caption, $selmenuitem, $state);
		echo $this->theader.$center.$this->tfooter;
		}
	
	}

class ICQListAdmin 
	{
	var $templ;
	var $prefs;
	
	function ICQListAdmin()
		{
		$this->templ=new AdminTempl;
		$this->prefs=new MyPrefsList;
		}
	
	function ShowNumbersList($result)
		{
		$query="SELECT * FROM icqlist LEFT JOIN icqusers ON icqlist.userid=icqusers.id";
		
		if ($this->prefs->GetPref('ICQLIST_STATE')==2||!$this->prefs->GetPref('ICQLIST_STATE')) $query.=" WHERE `active`=1 AND `userid`=-1";
		else
		if ($this->prefs->GetPref('ICQLIST_STATE')==3) $query.=" WHERE `userid`<>-1";
		else
		if ($this->prefs->GetPref('ICQLIST_STATE')==4) $query.=" WHERE `userid`=-1";
		
		$query.=" ORDER BY icqlist.active DESC";
		if ($res=mysql_query($query))
			{
			// Хедер
			$c='
			<form name=listform method=POST>
			<table cellspacing=1 cellpadding=5 border=0 bgcolor=#CCCCCC>
			<tr>
				<td bgcolor=#EEEEEE>Отображать:</td>
				<td bgcolor=#ffffff>
				<select name=showtype size=1 class=sel onchange="document.listform.submit(); return true;">
				<option value=1'; if ($this->prefs->GetPref('ICQLIST_STATE')==1) $c.=" SELECTED"; $c.='>все номера
				<option value=2'; if ($this->prefs->GetPref('ICQLIST_STATE')==2||!$this->prefs->GetPref('ICQLIST_STATE')) $c.=" SELECTED"; $c.='>только активные
				<option value=3'; if ($this->prefs->GetPref('ICQLIST_STATE')==3) $c.=" SELECTED"; $c.='>только, которые забрали
				<option value=4'; if ($this->prefs->GetPref('ICQLIST_STATE')==4) $c.=" SELECTED"; $c.='>активные+неактивные
				</select>
				</td>
			</tr>
			</table>
			<br>
			
			<table cellspacing=1 cellpadding=5 border=0 bgcolor=#CCCCCC>
			<tr>
				<td bgcolor=#EEEEEE>
				Отметка
				</td>
				
				<td bgcolor=#EEEEEE>
				Номер ICQ
				</td>
				
				<td bgcolor=#EEEEEE>
				Пароль
				</td>
				
				<td bgcolor=#EEEEEE>
				Кто взял
				</td>
				
				<td bgcolor=#EEEEEE>
				Активна
				</td>
			</tr>';
			
			
			while ($arr=mysql_fetch_array($res))
				{
				if ($arr[userid]!=-1) $bgcolor='#FFE8E8';
				else $bgcolor='#FFFFFF';
				$c.="
				<tr>
					<td align=center bgcolor=$bgcolor>
					<input type=checkbox name=\"check_$arr[icq]\" value=0>
					</td>
					
					<td bgcolor=$bgcolor>
					<input type=text onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_number_$arr[icq] value='$arr[icq]'>
					</td>
					
					<td bgcolor=$bgcolor>
					<input type=text onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_pass_$arr[icq] value='$arr[pass]'>
					</td>
					
					<td bgcolor=$bgcolor>";
				if ($arr[userid]!=-1) $c.='email:'.$arr[email].'<br>ip:'.$arr[ip];
				else $c.='Никто не взял';
				$c.="</td>
				
					<td align=center bgcolor=$bgcolor>
					<input type=checkbox onChange=\"document.listform.check_$arr[icq].checked=true;\" name=list_active_$arr[icq] "; if ($arr[active]!=0&&$arr[userid]==-1) $c.="value=1 checked"; else $c.="value=1"; $c.=">
					</td>
				</tr>";
				}
			
			
			$c.='</table>';
			
			
			$c.='<br>
			&nbsp;&nbsp;c отмеченными: <input type=submit onclick="if (confirm(\'Вы уверены в необходимости удаления выбранных ICQ?\')) {return true;} else {return false;}" name=delicq value="Удалить">&nbsp;<input type=submit name=editicq value="Редактировать"><br><br><br>
			
			
			<table cellspacing=1 cellpadding=2 border=0 bgcolor=#CCCCCC>
			<tr>
				<td bgcolor=#EEEEEE align=center>
				Номер ICQ:
				</td>
				<td bgcolor=#EEEEEE align=center>
				Пароль:
				</td>
			</tr>
			<tr>
				<td bgcolor=#ffffff align=center>
				<input type=text name=add_number>
				</td>
				<td bgcolor=#ffffff align=center>
				<input type=text name=add_pass>
				</td>
			</tr>
			<tr>
				<td bgcolor=#ffffff colspan=2 align=center>
				<input type=submit name=addicq style="width: 200;" value="Добавить">
				</td>
			</tr>
			</table>
			</form>';
			$this->templ->PrintTempl('Раздача ICQ - работа со списком',0,$result,$c);
			}
		else
			{
			echo 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
			}
		}
	
	function AddNumber($num,$pass)
		{
		if (!$num||!$pass||!is_numeric($num)) return 'Номер, либо пароль заданы неправильно!';
		if (mysql_query("INSERT INTO icqlist (`icq`,`pass`) VALUES ('$num','$pass')")) return "Номер $num добавлен успешно!";
		else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
		}
	
	function EditNumber($num,$newnum,$pass,$active)
		{
		if (mysql_query("UPDATE icqlist SET `icq`=$newnum, `pass`='$pass', `active`='$active' WHERE `icq`=$num")) return "Номер $num успешно отредактирован<br>";
		else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
		}
	
	function DelNumber($num)
		{
		if (mysql_query("DELETE FROM icqlist WHERE icq=$num")) return "Номер $num успешно удален<br>";
		else return 'Ошибка, при выполнении запроса к базе данных. Ответ MySQL:'.mysql_error();
		}
	
	function DelNumbers()
		{
		while (list($key,$value) = each($_REQUEST))
			{
			if (strpos($key,'check_')!==FALSE)
				{
				$num=substr($key,6);
				$result.=$this->DelNumber($num);
				}
			}
		return $result;
		}
	
	function EditNumbers()
		{
		while (list($key,$value) = each($_REQUEST))
			{
			if (strpos($key,'check_')!==FALSE)
				{
				$num=substr($key,6);
				if ($_REQUEST['list_active_'.$num]==1) $result.=$this->EditNumber($num,$_REQUEST['list_number_'.$num],$_REQUEST['list_pass_'.$num],1);
				else $result.=$this->EditNumber($num,$_REQUEST['list_number_'.$num],$_REQUEST['list_pass_'.$num],0);
				}
			}
		return $result;
		}
	
	}
	
class PrefsAdmin 
	{
	var $templ;
	var $prefs;
	
	function PrefsAdmin()
		{
		$this->templ=new AdminTempl;
		$this->prefs=new MyPrefsList;
		}
	
	function ShowForm($result=NULL)
		{
		if (!$result) $result='ok';
		$c="<form method=POST>
				<table cellspacing=1 cellpadding=3 border=0 bgcolor=#CCCCCC>
				<tr>
					<td colspan=2 bgcolor=#EEEEEE>
					<b>Параметры системы</b>
					</td>
				</tr>";
		
		reset($GLOBALS['sysprefs']);
		while (list($key,$value) = each($GLOBALS['sysprefs']))
			{
			$c.="<tr>
					<td bgcolor=#ffffff>
					".$value."
					</td>
					<td bgcolor=#ffffff>
					<input type=text name=$key style=\"width: 300px;\" value=\"".$this->prefs->GetPref($key)."\">
					</td>
				</tr>";
			}
		$c.="	<tr>
					<td colspan=2 bgcolor=#EEEEEE>
					<b>Настройки внешнего вида <br>В полях для стилей, можно задавать стили CSS либо классы CSS<br> (в таком случае перед именем класса обязательно нужно указать ключевое слово \"class:\",<br> например \"class: table\")</b>
					</td>
				</tr>";
		
		reset($GLOBALS['viewprefs']);
		while (list($key,$value) = each($GLOBALS['viewprefs']))
			{
			$c.="<tr>
					<td bgcolor=#ffffff>
					".$value."
					</td>
					<td bgcolor=#ffffff>
					<input type=text name=$key style=\"width: 300px;\" value=\"".$this->prefs->GetPref($key)."\">
					</td>
				</tr>";
			}
		$c.="	<tr>
					<td colspan=2 bgcolor=#ffffff align=center>
					<input type=submit name=updateprefs value=\"Обновить данные\">
					</td>
				</tr>
				</table>
			</form>";
		$this->templ->PrintTempl('Раздача ICQ - Настройки', 2, $result, $c);
		}
	
	function UpdatePrefs()
		{
		
		if ($_REQUEST['ICQ_NUMS']<100&&$_REQUEST['ICQ_NUMS']>=0) if ($this->prefs->UpdatePref("ICQ_NUMS",$_REQUEST['ICQ_NUMS'])) $fine.=$GLOBALS['sysprefs']['ICQ_NUMS'].", ";
		if ($_REQUEST['IP_TIME']<72&&$_REQUEST['IP_TIME']>=0) if ($this->prefs->UpdatePref("IP_TIME",$_REQUEST['IP_TIME'])) $fine.=$GLOBALS['sysprefs']['IP_TIME'].", ";
		if ($this->prefs->UpdatePref("SITE_NAME",$_REQUEST['SITE_NAME'])) $fine.=$GLOBALS['sysprefs']['SITE_NAME'].", ";
		if ($this->prefs->UpdatePref("ADMIN_EMAIL",$_REQUEST['ADMIN_EMAIL'])) $fine.=$GLOBALS['sysprefs']['ADMIN_EMAIL'].", ";
		
		reset($GLOBALS['viewprefs']);
		while (list($key,$value) = each($GLOBALS['viewprefs']))
			{
			if ($this->prefs->UpdatePref($key,$_REQUEST[$key])) $fine.=$value.", ";
			}
		return "Поля $fine обновлены успешно!";
		}
		
	}
	
class UserAdmin 
	{
	var $templ;
	
	function UserAdmin()
		{
		$this->templ=new AdminTempl;
		}
	
	function LoadUser($id)
		{
		if ($res=mysql_query("SELECT * FROM icqadminusers WHERE id=$id"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				return array('id'=>$arr['id'],'login'=>$arr['login'],'pass'=>$arr['pass']);
				}
			}
		return false;
		}
	
	function ShowUserForm($loaded=NULL,$result='ok')
		{
		$tekuser=$this->LoadUser($loaded);
		$c="<table cellspacing=1 cellpadding=3 border=0 bgcolor=#CCCCCC>
				<form method=POST>
				<tr>
					<td bgcolor=#ffffff>
					<center><b>Пользователи:</b><br></center>
					<select name=seluser size=5 class=sel>";
		if ($res=mysql_query("SELECT * FROM icqadminusers"))
			{
			while ($arr=mysql_fetch_array($res))
				{
				$c.="<option value=$arr[id]"; 
				if ($loaded==$arr['id']) $c.=" SELECTED";
				$c.=">$arr[login]";
				}
			}
		$c.="</select>
					</td>
					<td bgcolor=#ffffff align=center>
					<input type=submit name=loaduser value=\"Загрузить &raquo;\"><br>
					<br>
					<input type=submit name=deluser value=\"Удалить\">
					</td>
					<td bgcolor=#ffffff>
					<table cellspacing=1 cellpadding=3 border=0>
					<tr>
						<td>
						Имя
						</td>
						<td>
						<input type=text name=username value=\"".$tekuser[login]."\">
						</td>
					</tr>
					<tr>
						<td>
						Пароль
						</td>
						<td>
						<input type=password name=pass value=\"\">
						</td>
					</tr>
					<tr>
						<td colspan=2>
						<input type=submit name=adduser value=\"Добавить\">
						<input type=submit name=edituser value=\"Редактировать\">
						<input type=hidden name=loadedid value=\"".$tekuser[id]."\">
						</td>
					</tr>
					</table>
					</td>
				</tr>
				</form>
				</table>
				<br><br>";
		$this->templ->PrintTempl('Раздача ICQ - Пользователи', 1, $result, $c);
		}
		
	function UserExists($login)
		{
		if ($res=mysql_query("SELECT * FROM icqadminusers WHERE login='$login'"))
			{
			if ($arr=mysql_fetch_array($res))
				{
				return $arr['id'];
				}
			}
		return false;
		}
		
	function AddUser()
		{
		if (!$_REQUEST['username']||!$_REQUEST['pass']||!eregi('[a-z|A-Z|_]{4,}',$_REQUEST['username'])) return 'Добавдение невозможно. Не заданы (либо заданы неправильно) имя или пароль пользователя!';
		if ($this->UserExists($_REQUEST['username'])) return 'Добавление невозможно. Пользователь с таким именем уже существует!';
		if (mysql_query("INSERT INTO icqadminusers (`login`,`pass`) VALUES ('".strip_tags($_REQUEST['username'])."','".md5($_REQUEST['pass'])."')")) return 'Пользователь с именем '.$_REQUEST['username'].' успешно добавлен!';
		else return 'Не удалось добавить пользователя';
		}
		
	function DelUser()
		{
		if (!$_REQUEST['seluser']) return 'Пользователь не выбран';
		if (mysql_query("DELETE FROM icqadminusers WHERE id=".$_REQUEST['seluser'])) return "Пользователь успешно удален!";
		else return "Не удалось удалить пользователя!";
		}
		
	function EditUser()
		{
		if (!$_REQUEST['loadedid']) return 'Пользователь не загружен';
		if (!$_REQUEST['username']||!eregi('[a-z|A-Z|_]{4,}',$_REQUEST['username'])) return 'Редактирование невозможно. Не задано (либо задано неправильно) имя пользователя!';
		if ($this->UserExists($_REQUEST['username'])&&$this->UserExists($_REQUEST['username'])!=$_REQUEST['loadedid']) return 'Редактирование невозможно. Пользователь с таким именем уже существует!';
		$query="UPDATE icqadminusers SET `login`='".$_REQUEST['username']."'";
		if ($_REQUEST['pass']) $query.=",`pass`='".md5($_REQUEST['pass'])."'";
		$query.=" WHERE id=".$_REQUEST['loadedid'];
		if (mysql_query($query)) return 'Пользователь с именем '.$_REQUEST['username'].' успешно отредактирован!';
		else return 'Не удалось отредактировать пользователя';
		}
		
	}
	
class Auth
	{
	function Authenticate()
		{
		while (!$this->CheckUser())
			{
			header("WWW-Authenticate: Basic realm=\"Раздача ICQ\"");
			header("HTTP/1.0 401 Unauthorized");
			header('status: 401 Unauthorized');
	    	echo "Доступ запрещен";
    		exit;
			}
		session_start(); 
		if (!$_SESSION['auth_user']||!$_SESSION['auth_pw']) 
			{
			$_SESSION['auth_user']=$_SERVER['PHP_AUTH_USER'];
			$_SESSION['auth_pw']=$_SERVER['PHP_AUTH_PW'];
			$_SERVER['PHP_AUTH_PW']=NULL;
			}
		}
		
	function CheckUser()
		{
		
		if (!isset($_SESSION['auth_user'])) 
			{
			$u_login=$_SERVER['PHP_AUTH_USER'];
			$u_pass=$_SERVER['PHP_AUTH_PW'];
			}
		else
			{ 
			$u_login=$_SESSION['auth_user'];
			$u_pass=$_SESSION['auth_pw'];
			}
		
		
		if ($u_login==""||$u_pass=="") return false;
		if ($res=mysql_query("SELECT login FROM `icqadminusers` WHERE login=\"$u_login\" and pass=\"".md5($u_pass)."\""))
			{
			if (mysql_num_rows($res)<=0) return false;
			else return true;
			}
		else return false;
		}
		
	}

?>