<?php 
error_reporting(7);
//error_reporting(0);

# Набор функций для автоматизированной кассы «Визави» 
# BrokenBrake.biz, ноябрь 2009 года. 



# Запись настроек 
function vw($data) // Это не VolksWagen :) vw = Variables Write. Вот.
{
$file = "var/set.php";

$data = var_export($data, true); 
$data = "<?php \$$set = $data;";

return file_put_contents($file, $data);
}



# Отправка email (Must Have - http://habrahabr.ru/blogs/webdev/17531/)
function emailSend($address, $subject, $body)
{
	global $set;
$address = strtolower($address);
$from = $set['ownerMail'];
$from_name = $set['ownerName']; 

$body = "$body\n\n--\n{$set['signature']}";

# =?кодировка?способ кодирования?закодированный текст?=

$from_name = base64_encode($from_name);
$subj = base64_encode($subj); $subj = "=?UTF-8?B?$subj?=";
$body = base64_encode($body);

$headers = "From: =?UTF-8?B?$from_name?= <$from>\r\n".
"Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
X-Mailer: Visavi BrokenBrake (PHP)";

mail($address, $subject, $body, $headers);
} 


# Генерация формы для LiqPay
function liqPayForm($email, $sum)
{
	global $set;

	$xml="<request>      
		<version>1.2</version>
		<result_url></result_url>
		<server_url></server_url>
		<merchant_id>{$set['liqpayMerchant']}</merchant_id>
		<order_id>$email</order_id>
		<amount>$sum</amount>
		<currency>{$set['currency']}</currency>
		<description>{$set['description']}</description>
		<default_phone></default_phone>
		<pay_way></pay_way> 
		</request>";

	$xml_encoded = base64_encode($xml); 
	$lqsignature = base64_encode(sha1($set['liqpaySign'].$xml.$set['liqpaySign'],1));

return "<form action='https://liqpay.com/?do=clickNbuy' method='post'>
		<input type='hidden' name='operation_xml' value='$xml_encoded' />
		<input type='hidden' name='signature' value='$lqsignature' />
		<button>Перейти к оплате</button>
		</form>";	
}



# Обёртка шаблоном
function print_page($content, $title)
{
	global $set;
	if (empty($set['template']) OR strpos($_SERVER['PHP_SELF'], 'adm.php'))
	{
		$HTML = file_get_contents('template.html');
	}
	else 
	{
		$HTML = $set['template'];
	}
	$search[] = "/<[sS][tT][yY][lL][eE][\s\/]*>/";
	$search[] = "/<[cC][oO][nN][tT][eE][nN][tT][\s\/]*>/";
	$search[] = "/<[pP][aA][gG][eE][tT][iI][tT][lL][eE][\s\/]*>/";

	$styleURL = './?style='.$set['CSSupdate'];
	if (empty($set['CSS']) OR strpos($_SERVER['PHP_SELF'], 'adm.php')) $styleURL = 'style.css';
	$replace[] = "<link href='$styleURL' rel='stylesheet' />";
	$replace[] = $content;
	$replace[] = $title;
header('Content-Type: text/html; charset=UTF-8');
	echo preg_replace($search, $replace, $HTML);
}



# Сонная генерация случайной строки символов
function strando($num)
{
$Aa = array(65,97); 
for ($x=0; $x<$num; $x++) 
{
$min = $Aa[rand(0,1)];
$max = $min + 25;
$str .= chr(rand($min, $max));
}
return $str;
} // echo strando(8); // Нафиг я это делал?



# Проверка авторизации
function whois()
{
	global $write, $set;
if (md5($_COOKIE['login'].$_SERVER['remote_addr']) == $set['login'])
	{return true;} else {return false;}
}



# Вход
function in($pass)
{
	global $write, $set;
if (md5($pass) == $set['pass'])
	{	$hash = strando(6);
		$set['login'] = md5($hash.$_SERVER['remote_addr']); // Параноя?
		$write['set'] = 1; static $write;
		setcookie('login', $hash, time()+5184000); // Примерно 2 месяца
		return true;
	} else return false;
}



# Выход
function out()
{
	global $write, $set;
$set['login'] = strando(6);
$write['set'] = 1;  static $write;
setcookie('login', 'del', time()-50000000);
}



# Регистрация и смена пароля
function reg($pass)
{
	global $write, $set;
$set['pass'] = md5($pass);
$write['set'] = 1;  static $write;
in($pass); # И сразу входим?
}



