Файл: _rootadmin/_partnersettings.inc.php
Строк: 886
<?
if (!$sub) {$sub='partner';}
if ($sub == "percents" or $sub == "addpercent" or $sub == "addpercent2" or $sub == "deletepercent") {
$partnerType=GetSetting("partnerType");
$partnerLevels=GetSetting("partnerLevels");
if ($sub == "deletepercent") {
checkAdminAccess('sPartnerPercentsDelete',1);
if ($id) {
@mysql_query("delete from partner_percents where id='$id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
writeAdminLog("Удалена процентная ставка партнерской программы ID # $id");
print "Процентная ставка успешно удалена.";
}
else {
print "Утерян идентификатор процентной ставки.";
}
print "<BR><BR>";
}
if ($sub == "addpercent2") {
checkAdminAccess('sPartnerPercentsCreate',1);
if ($userLogin) {
$user = GetUserByLogin($userLogin);
$userId = $user->id;
}
if (!$userId) { $userId = 0; }
if (!$type) {print "Не указан тип заказа для которого будет действовать процентная ставка.";}
else if ($partnerType == "withReferalCount" and ($refsCountMin == "" or $refsCountMax == "")) { print "Не указан диапазон привлеченных рефералов при котором будет действовать процентная ставка."; }
else if ($partnerType == "withReferalCount" and (intval($refsCountMin) >= intval($refsCountMax))) { print "Указан неправильный диапазон привлеченных рефералов при котором будет действовать процентная ставка."; }
else if ($percentsLevel1 < 0) { print "Не указана процентная ставка для уровня 1."; }
else if ($partnerLevels == "2" and $percentsLevel2 < 0) { print "Не указана процентная ставка для уровня 2."; }
else if ($userLogin and !$userId) { print "Клиент с логином $userLogin не найден."; }
else {
$refsCountMin = intval($refsCountMin);
$refsCountMax = intval($refsCountMax);
if ($type == "all") { $sql = "type<>'all'"; $error = "Запрещено использовать тип заказа Любой, если есть хотябы одна процентная ставка с другим типом заказа."; }
else { $sql = "type='all'"; $error = "Запрещено использовать данный тип заказа, если есть хотябы одна процентная ставка с типом заказа Любой."; }
$r=@mysql_query("select * from partner_percents where uid='$userId' and $sql") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($r) > 0) { print "$error"; }
else {
if ($partnerType == "withReferalCount") { $sql = "and (refsCountMin=$refsCountMin or refsCountMax=$refsCountMax or refsCountMin=$refsCountMax or refsCountMax=$refsCountMin or ($refsCountMin > refsCountMin and $refsCountMin < refsCountMax) or ($refsCountMax > refsCountMin and $refsCountMax < refsCountMax))"; } else { $sql = ""; }
$r=@mysql_query("select * from partner_percents where uid='$userId' and type='$type' $sql") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($r) > 0) {
if ($partnerType == "withReferalCount") {
print "Одно из значений диапазона уже используется в ранее установленной процентной ставке.";
} else {
print "Процентная ставка для данного типа заказа уже установлена ранее.";
}
}
else {
@mysql_query("insert into partner_percents (type,refsCountMin,refsCountMax,percentsLevel1,percentsLevel2,uid) values('$type','$refsCountMin','$refsCountMax','$percentsLevel1','$percentsLevel2','$userId')") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
$newid=mysql_insert_id();
writeAdminLog("Добавлена новая процентная ставка партнерской программы ID # $newid");
print "Процентная ставка успешно добавлена в базу.";
$refsCountMin = "";
$refsCountMax = "";
$percentsLevel1 = "";
$percentsLevel2 = "";
$userLogin = "";
}
}
}
print "<BR><BR>";
}
checkAdminAccess('sPartnerPercentsRead',1);
$cols = 4;
if ($partnerType == "withReferalCount") { $cols += 1; }
if ($partnerLevels == "2") { $cols += 1; }
print "<form method=post>";
print "<input type=hidden name=do value=$do>";
print "<input type=hidden name=sub value=addpercent2>";
print "<table width=99%>";
print "<tr><td colspan=".($cols-1)." align=center bgcolor=#EAEAEA><B>Добавление процентной ставки</b></td></tr>";
print "<tr bgcolor=$font_row align=center>";
print "<td>Тип заказа: <select name=type>";
print "<option value=all "; if ($type == "all") { print "selected"; } print ">Любой</option>";
print "<option value=hosting "; if ($type == "hosting") { print "selected"; } print ">Хостинг</option>";
print "<option value=reseller "; if ($type == "reseller") { print "selected"; } print ">Реселлинг</option>";
print "<option value=vds "; if ($type == "vds") { print "selected"; } print ">Виртуальный сервер</option>";
print "<option value=dedicated "; if ($type == "dedicated") { print "selected"; } print ">Выделенный сервер</option>";
print "<option value=vpn "; if ($type == "vpn") { print "selected"; } print ">VPN</option>";
print "<option value=ssh "; if ($type == "ssh") { print "selected"; } print ">SSH</option>";
print "<option value=domains "; if ($type == "domains") { print "selected"; } print ">Домены</option>";
print "<option value=addons "; if ($type == "addons") { print "selected"; } print ">Дополнительные услуги</option>";
print "<option value=shop "; if ($type == "shop") { print "selected"; } print ">Товары / Услуги</option>";
print "<option value=other "; if ($type == "other") { print "selected"; } print ">Другое</option>";
print "</select></td>";
if ($partnerType == "withReferalCount") {
print "<td>Рефералов: от <input type=text name=refsCountMin size=1 value=$refsCountMin> до <input type=text name=refsCountMax size=1 value=$refsCountMax></td>";
}
print "<td>Проценты: уровень 1 <input type=text name=percentsLevel1 size=1 value=$percentsLevel1>";
if ($partnerLevels == "2") {
print " уровень 2 <input type=text name=percentsLevel2 size=1 value=$percentsLevel2>";
}
print "</td>";
print "</tr>";
print "<tr bgcolor=$font_row>";
print "<td colspan=".($cols-1)." align=center>Для добавления персональной процентной ставки, укажите логин клиента: <input type=text name=userLogin size=10 value=$userLogin></td></tr>";
print "<tr><td colspan=".($cols-1)." align=center bgcolor=#EAEAEA><input type=submit value=Добавить></td></tr>";
print "</table>";
print "</form><BR>";
$r=@mysql_query("select * from partner_percents where uid='0' order by type,refsCountMin") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($r) > 0) {
print "<table cellpadding=3 width=99%>";
print "<tr><td colspan=$cols align=center bgcolor=$font_head><B>Глобальные процентные ставки</b></td></tr>";
print "<tr bgcolor=$font_head><td align=center>ID</td><td align=center>Тип заказа</td>";
if ($partnerType == "withReferalCount") {
print "<td align=center>Кол-во рефералов</td>";
}
print "<td align=center>%, уровень 1</td>";
if ($partnerLevels == "2") {
print "<td align=center>%, уровень 2</td>";
}
print "<td align=center></td></tr>";
$cnt=0;
while ($rr = @mysql_fetch_object($r)) {
getfont();
print "<tr bgcolor=$font_row align=center>";
print "<td width=30>$rr->id</td>";
print "<td>$rr->type</td>";
if ($partnerType == "withReferalCount") {
print "<td>от $rr->refsCountMin до $rr->refsCountMax</td>";
}
print "<td>$rr->percentsLevel1</td>";
if ($partnerLevels == "2") {
print "<td>$rr->percentsLevel2</td>";
}
print "<td width=100 align=center><A href=?do=$do&sub=deletepercent&id=$rr->id onclick="javascript: return confirm('Вы уверены, что хотите удалить процентную ставку?');"><img src=./_rootimages/del.gif alt=Удалить border=0></a></td>";
print "</tr>";
$cnt++;
}
print "<tr bgcolor=$font_head><Td colspan=$cols>Всего процентных ставок: $cnt</td></tr>";
print "</table><BR>";
}
$r=@mysql_query("select * from partner_percents where uid<>'0' order by uid,type,refsCountMin") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($r) > 0) {
print "<table cellpadding=3 width=99%>";
print "<tr><td colspan=".($cols+1)." align=center bgcolor=$font_head><B>Персональные процентные ставки</b></td></tr>";
print "<tr bgcolor=$font_head><td align=center>ID</td><td align=center>Клиент</td><td align=center>Тип заказа</td>";
if ($partnerType == "withReferalCount") {
print "<td align=center>Кол-во рефералов</td>";
}
print "<td align=center>%, уровень 1</td>";
if ($partnerLevels == "2") {
print "<td align=center>%, уровень 2</td>";
}
print "<td align=center></td></tr>";
$cnt=0;
while ($rr = @mysql_fetch_object($r)) {
getfont();
$user = GetUserById($rr->uid);
print "<tr bgcolor=$font_row align=center>";
print "<td width=30>$rr->id</td>";
print "<td><A href=?do=fullinfo&id=$rr->uid>$user->login</a></td>";
print "<td>$rr->type</td>";
if ($partnerType == "withReferalCount") {
print "<td>от $rr->refsCountMin до $rr->refsCountMax</td>";
}
print "<td>$rr->percentsLevel1</td>";
if ($partnerLevels == "2") {
print "<td>$rr->percentsLevel2</td>";
}
print "<td width=100 align=center><A href=?do=$do&sub=deletepercent&id=$rr->id onclick="javascript: return confirm('Вы уверены, что хотите удалить процентную ставку?');"><img src=./_rootimages/del.gif alt=Удалить border=0></a></td>";
print "</tr>";
$cnt++;
}
print "<tr bgcolor=$font_head><Td colspan=".($cols+1).">Всего процентных ставок: $cnt</td></tr>";
print "</table><BR>";
}
}
if ($sub == "addbanner") {
checkAdminAccess('sPartnerBannerCreate',1);
if ($_FILES['userfile']['name'] != '' and $_FILES['userfile']['type'] != '' and $_FILES['userfile']['tmp_name'] != '') {
if (preg_match("/jpg/ui",$_FILES['userfile']['type']) or preg_match("/jpeg/ui",$_FILES['userfile']['type']) or preg_match("/gif/ui",$_FILES['userfile']['type']) or preg_match("/png/ui",$_FILES['userfile']['type']) or preg_match("/flash/ui",$_FILES['userfile']['type'])) {
if (preg_match("/flash/ui",$_FILES['userfile']['type']) and !$banner_code) {print "<font color=red>Для Flash-баннеров обязательно должен быть указан код баннера.</font><br><br>";}
else {
$file="./_rootimages/banners/".$_FILES['userfile']['name'];
$file_code=$file.".code";
if (!file_exists($file)) {
if (move_uploaded_file($_FILES['userfile']['tmp_name'],$file)) {
@chmod($file, 0777);
if ($banner_code) {
$handle = fopen($file_code, 'w');
fwrite($handle, htmlDecode($banner_code));
fclose($handle);
@chmod($file_code, 0777);
}
writeAdminLog("Добавлен баннер в партнерскую программу");
print "Баннер успешно загружен.<br><br>";
}
else {print "<font color=red>Невозможно переместить файл. Возможно не выставлены права на запись на директорию <b>_rootimages/banners</b>.</font><br><br>";}
} else {print "<font color=red>Баннер с таким именем файла уже загружен.</font><br><br>";}
}
}
else {
print "<font color=red>Неверный тип файла. Допустимые расширения: jpg, jpeg, gif, png, swf.</font><br><br>";
}
}
else {
print "<font color=red>Системная ошибка. Невозможно загрузить файл.</font><br><br>";
}
$sub="banners";
}
if ($sub == "delbanner" and $file) {
checkAdminAccess('sPartnerBannerDelete',1);
@unlink("./_rootimages/banners/".$file);
@unlink("./_rootimages/banners/".$file.".code");
writeAdminLog("Удален баннер из партнерской программы");
print "Баннер успешно удален.<br><br>";
$sub="banners";
}
if ($sub == "banners") {
checkAdminAccess('sPartnerBannerRead',1);
$company_name=GetSetting("company_name");
if (!$banner_code) { $banner_code="<a href='{url}' alt='$company_name' target='_blank'><img src='{image}' border='0'></a>"; }
?>
<table width=99%>
<tr><td colspan=2 align=center bgcolor=<? print $font_head?>><B>Ваши баннеры</b></td></tr>
<tr><td colspan=2 align=center bgcolor=<? print $font_row?> valign=middle height=60>
Допустимые расширения: jpg, jpeg, gif, png, swf<BR><BR>
<form method=post enctype="multipart/form-data">
<input type=hidden name=do value=<? print $do?>>
<input type=hidden name=sub value=addbanner>
Загрузить баннер: <input type='file' name='userfile'><BR><BR>
Код баннера:<BR>
<textarea name=banner_code cols=50 rows=7><? print $banner_code?></textarea><BR>Путь к файлу в коде нужно заменить на {image}, а ссылку на {url}<BR><BR>
<input type=submit value=Загрузить>
</form>
</td></tr>
<?
$handle=opendir("./_rootimages/banners/");
while ($file = readdir($handle)) {
$f = mb_split(".",$file);
if ($file != "." and $file != ".." and $file != "" and !preg_match("/.code$/iu", $file) and !preg_match("/^cat_/iu", $file) and (preg_match ("/gif/ui", $f[1]) or preg_match ("/jpg/iu", $f[1]) or preg_match ("/jpeg/iu", $f[1]) or preg_match ("/png/ui", $f[1]) or preg_match ("/swf/ui", $f[1]))) {$files[] = $file;}
}
closedir($handle);
@sort($files);
$cnt=count($files);
while (list($k,$v) = @each($files)) {
$banner_code = GetBannerCodeByFileName($v);
getfont();
?>
<tr align=center valign=middle bgcolor=<? print $font_row?>><td>[<? print $v?>]<br><a href=?do=<? print $do?>&sub=delbanner&file=<? print $v?> onclick="javascript: return confirm('Вы уверены, что хотите удалить баннер?');"><img src=./_rootimages/del.gif border=0 alt="Удалить баннер"></a></td><td><? print $banner_code?></td></tr>
<?
}
?>
</table>
<?
}
if ($sub == "savepartner") {
checkAdminAccess('sPartnerEdit',1);
SetSetting("partnerEnable", $partnerEnable);
SetSetting("partnerType", $partnerType);
SetSetting("partnerLevels", $partnerLevels);
SetSetting("partnerEnableOrderReferalLogin", $partnerEnableOrderReferalLogin);
if ($partnerCookieTime < 1) {print "<font color=red>Время жизни cookies не может быть меньше одного дня.</font><br>";}
else { SetSetting("partnerCookieTime", $partnerCookieTime); }
SetSetting("partnerUrl", $partnerUrl);
SetSetting("partnerProcentAllOrders", $partnerProcentAllOrders);
SetSetting("partnerEnablePayOrders", $partnerEnablePayOrders);
SetSetting("partnerAllowSendMoney", $partnerAllowSendMoney);
if ($partnerMaxReferals < 0) {print "<font color=red>Максимальное количество рефералов не может быть меньше нуля.</font><br>";}
else { SetSetting("partnerMaxReferals",$partnerMaxReferals); }
if ($partnerMinMoneyOut < 0) {print "<font color=red>Минимальная сумма вывода не может быть меньше нуля.</font><br>";}
else { SetSetting("partnerMinMoneyOut", $partnerMinMoneyOut); }
SetSetting("partnerMinActiveReferalsMoneyOut", $partnerMinActiveReferalsMoneyOut);
writeAdminLog("Изменены настройки: Партнерская программа");
print "Данные успешно сохранены.<BR><BR>";
$sub="partner";
}
if ($sub == "partner") {
checkAdminAccess('sPartnerRead',1);
$partnerEnable=GetSetting("partnerEnable");
$partnerType=GetSetting("partnerType");
$partnerLevels=GetSetting("partnerLevels");
$partnerEnableOrderReferalLogin=GetSetting("partnerEnableOrderReferalLogin");
$partnerCookieTime=GetSetting("partnerCookieTime");
$partnerUrl=GetSetting("partnerUrl");
$partnerProcentAllOrders=GetSetting("partnerProcentAllOrders");
$partnerMaxReferals=GetSetting("partnerMaxReferals");
$partnerEnablePayOrders=GetSetting("partnerEnablePayOrders");
$partnerAllowSendMoney=GetSetting("partnerAllowSendMoney");
$partnerMaxReferals=GetSetting("partnerMaxReferals");
$partnerMinMoneyOut=GetSetting("partnerMinMoneyOut");
$partnerMinActiveReferalsMoneyOut=GetSetting("partnerMinActiveReferalsMoneyOut");
?>
<form method=post>
<input type=hidden name=do value=<? print $do?>>
<input type=hidden name=sub value=savepartner>
<table width=99% bgcolor=<? print $font_row?>
<tr><td colspan=2 align=center bgcolor=<? print $font_head?>><B>Общие настройки партнерской программы</b></td></tr>
<tr><td align=right width=400>Партнерская программа:</td><Td align=left><input type=radio name=partnerEnable value=1 <? if ($partnerEnable) { print "checked"; } ?>> включена <input type=radio name=partnerEnable value=0 <? if (!$partnerEnable) { print "checked"; } ?>> выключена</td></tr>
<tr><td align=right valign=top>Тип партнерской программы:</td><Td align=left><input type=radio name=partnerType value=normal <? if ($partnerType == "normal") { print "checked"; } ?>> Стандартная (учитывается только тип заказа)<BR><input type=radio name=partnerType value=withReferalCount <? if ($partnerType == "withReferalCount") { print "checked"; } ?>> Расширенная (учитывается тип заказа и кол-во привлеченных клиентов)</td></tr>
<tr><td align=right>Количество уровней:</td><Td align=left><input type=radio name=partnerLevels value=1 <? if ($partnerLevels == "1") { print "checked"; } ?>> 1 уровень <input type=radio name=partnerLevels value=2 <? if ($partnerLevels == "2") { print "checked"; } ?>> 2 уровня</td></tr>
<tr><td align=right>Начислять проценты за оплату:</td><Td align=left><input type=radio name=partnerProcentAllOrders value=0 <? if (!$partnerProcentAllOrders) { print "checked"; } ?>> первого заказа реферала <input type=radio name=partnerProcentAllOrders value=1 <? if ($partnerProcentAllOrders) { print "checked"; } ?>> всех заказов реферала</td></tr>
<tr><td align=right><BR>Поле для ввода логина друга:<img src='./_rootimages/question.gif' alt='Если включено, то в форме регистрации будет возможность указать логин друга, который привел клиента.'></td><Td align=left><BR><input type=radio name=partnerEnableOrderReferalLogin value=1 <? if ($partnerEnableOrderReferalLogin) { print "checked"; } ?>> включено <input type=radio name=partnerEnableOrderReferalLogin value=0 <? if (!$partnerEnableOrderReferalLogin) { print "checked"; } ?>> выключено</td></tr>
<tr><td align=right>Разрешить оплачивать заказы с партнерского счета:</td><Td align=left><input type=radio name=partnerEnablePayOrders value=1 <? if ($partnerEnablePayOrders) { print "checked"; } ?>> да <input type=radio name=partnerEnablePayOrders value=0 <? if (!$partnerEnablePayOrders) { print "checked"; } ?>> нет</td></tr>
<tr><td align=right>Разрешить перевод партнерских средств:<img src='./_rootimages/question.gif' alt='Если включено, то клиент сможет перевести партнерские средства на внутренний баланс другого клиента.'></td><Td align=left><input type=radio name=partnerAllowSendMoney value=1 <? if ($partnerAllowSendMoney) { print "checked"; } ?>> да <input type=radio name=partnerAllowSendMoney value=0 <? if (!$partnerAllowSendMoney) { print "checked"; } ?>> нет</td></tr>
<tr><td align=right><BR>Макс. кол-во рефералов:<img src='./_rootimages/question.gif' alt='Максимальное количество рефералов, которых может привести клиент и получать за них проценты от продаж.<BR><BR>0 - без ограничений.'></td><Td align=left><BR><input type=text name=partnerMaxReferals size=3 value="<? print $partnerMaxReferals?>"></td></tr>
<tr><td align=right><BR>Минимальная сумма вывода, <? print CURAS?>:</td><Td align=left><BR><input type=text name=partnerMinMoneyOut size=3 value="<? print $partnerMinMoneyOut?>"></td></tr>
<tr><td align=right>Разрешить вывод если миним. кол-во активных рефералов, шт.:<img src='./_rootimages/question.gif' alt='Если <B>0</B> - вывод разрешен всегда, если на счету есть минимальная сумма для вывода.<BR><BR>Если <B>задано значение</B> - вывод разрешен только тогда, когда у клиента есть минимальная сумма для вывода и он привёл указанное количество активных рефералов первого уровня (у реферала есть хотябы один оплаченный счет или непросроченный заказ/домен/товар)'></td><Td align=left><input type=text name=partnerMinActiveReferalsMoneyOut size=3 value="<? print $partnerMinActiveReferalsMoneyOut?>"></td></tr>
<tr><td align=right><BR>Срок жизни cookies:</td><Td align=left><BR><input type=text name=partnerCookieTime size=3 value="<? print $partnerCookieTime?>"> дней</td></tr>
<tr><td align=right>URL, куда направляем посетителя после перехода по ссылке:</td><Td align=left><input type=text name=partnerUrl size=30 value="<? print $partnerUrl?>"></td></tr>
<tr><Td colspan=2 align=center><BR><input type=submit value=Сохранить></td></tr>
</table>
</form><br>
<?
}
?>