Файл: crondeleteorders.php
Строк: 573
<?
$full_home_path = dirname(__FILE__);
require_once($full_home_path.'/_rootload.php');
mconnect();
EnableLanguages(1);
if (!GetCurrentCurrency()) { print $_lang[ErrorGetCurrentCurrency]; mclose(); exit; }
@set_time_limit(0);
$company_name=GetSetting('company_name');
$company_url=GetSetting('company_url');
$billing_url=GetSetting('billing_url');
$support_url=GetSetting('support_url');
$manager_email=GetSetting('manager_email');
$cronAutoSuspend = GetSetting('cronAutoSuspend');
$cronAutoSuspendDay = GetSetting('cronAutoSuspendDay');
$cronSendAdminEndOrder = GetSetting('cronSendAdminEndOrder');
$cronSendClientBillRemind = GetSetting('cronSendClientBillRemind');
$cronSendClientBillRemindDays = GetSetting('cronSendClientBillRemindDays');
$cronSendClientEndOrderRemind = GetSetting('cronSendClientEndOrderRemind');
$cronSendClientEndOrderRemindDays = GetSetting('cronSendClientEndOrderRemindDays');
$cronSendClientEndOrderDomainRemind = GetSetting('cronSendClientEndOrderDomainRemind');
$cronSendClientEndOrderDomainRemindDays = GetSetting('cronSendClientEndOrderDomainRemindDays');
$cronDeleteBill = GetSetting('cronDeleteBill');
$cronDeleteBillDay = GetSetting('cronDeleteBillDay');
$cronDeleteNeobrabOrdersWithoutBills = GetSetting('cronDeleteNeobrabOrdersWithoutBills');
$cronDeleteNeobrabOrdersDomainsWithoutBills = GetSetting('cronDeleteNeobrabOrdersDomainsWithoutBills');
$cronDeleteOrder = GetSetting('cronDeleteOrder');
$cronDeleteOrderDay = GetSetting('cronDeleteOrderDay');
$cronAutoDelete = GetSetting('cronAutoDelete');
$cronDeleteOrderDomain = GetSetting('cronDeleteOrderDomain');
$cronDeleteOrderDomainDay = GetSetting('cronDeleteOrderDomainDay');
$cronCloseTickets = GetSetting('cronCloseTickets');
$cronCloseTicketsDay = GetSetting('cronCloseTicketsDay');
$cronDeleteTickets = GetSetting('cronDeleteTickets');
$cronDeleteTicketsDay = GetSetting('cronDeleteTicketsDay');
$cronDeleteUserLogs = GetSetting('cronDeleteUserLogs');
$cronDeleteUserLogsDay = GetSetting('cronDeleteUserLogsDay');
$cronDeleteAdminLogs = GetSetting('cronDeleteAdminLogs');
$cronDeleteAdminLogsDay = GetSetting('cronDeleteAdminLogsDay');
$cronSendClientEndOrderShopRemind = GetSetting('cronSendClientEndOrderShopRemind');
$cronSendClientEndOrderShopRemindDays = GetSetting('cronSendClientEndOrderShopRemindDays');
$cronDeleteNeobrabOrdersShopWithoutBills = GetSetting('cronDeleteNeobrabOrdersShopWithoutBills');
$cronDeleteOrderShop = GetSetting('cronDeleteOrderShop');
$cronDeleteOrderShopDay = GetSetting('cronDeleteOrderShopDay');
$cronSendClientEndTestRemind = GetSetting('cronSendClientEndTestRemind');
$cronSendClientEndTestRemindDays = GetSetting('cronSendClientEndTestRemindDays');
$autoRenewEnable=GetSetting("autoRenewEnable");
$autoRenewClientChange=GetSetting("autoRenewClientChange");
$autoRenewDay=GetSetting("autoRenewDay");
$autoRenewDomainDay=GetSetting("autoRenewDomainDay");
$autoRenewShopDay=GetSetting("autoRenewShopDay");
$attachPDFtoBill = GetSetting("attachPDFtoBill");
$cronSendClientEndTestRemind = GetSetting('cronSendClientEndTestRemind');
$cronSendClientEndTestRemindDays = GetSetting('cronSendClientEndTestRemindDays');
$cronAutoDeleteTest = GetSetting('cronAutoDeleteTest');
$smsGateway = GetSetting("smsGateway");
$smsUserBillRemind = GetSetting("smsUserBillRemind");
$smsUserBillRemindDay = GetSetting("smsUserBillRemindDay");
$smsUserOrderRemind = GetSetting("smsUserOrderRemind");
$smsUserOrderRemindDay = GetSetting("smsUserOrderRemindDay");
$smsUserOrderDomainRemind = GetSetting("smsUserOrderDomainRemind");
$smsUserOrderDomainRemindDay = GetSetting("smsUserOrderDomainRemindDay");
$smsUserOrderShopRemind = GetSetting("smsUserOrderShopRemind");
$smsUserOrderShopRemindDay = GetSetting("smsUserOrderShopRemindDay");
$smsUserOrderSuspend = GetSetting("smsUserOrderSuspend");
# Удаляем заказы (домены) у которых истек оплаченный срок истек и они не продлены.
if ($cronDeleteOrderDomain and intval($cronDeleteOrderDomainDay) > 0) {
$error = "";
$domains = @mysql_query("select * from orders_domains where startdate <> '0000-00-00' AND (TO_DAYS(todate)-TO_DAYS(NOW())<=-$cronDeleteOrderDomainDay)") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($domains) > 0) {
while ($domain = mysql_fetch_object($domains)) {
$user = GetUserById($domain->uid);
$registrator = GetRegistratorById($domain->autoregby);
if ($registrator->type == "hostmasterepp" or $registrator->type == "nicdpua") {
if (deleteDomain($domain->domain)) {
$error = $error . "+ заявка для $domain->domain успешно выполненаrn";
} else {
$error = $error . "- ошибка для $domain->domain: " . $GLOBALerror."rn";
}
}
@mysql_query("update orders set domain_reg='0' where domain='$domain->domain'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
@mysql_query("update bills set domain_id='0', domain_srok='0', money_domain='0' where domain_id='$domain->id' and NOT(host_id='0')") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if ($domain->dnsServerId) {
deleteDomainZoneAtServer($domain->id);
}
@mysql_query("delete from orders_domains where id='$domain->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
$bs = @mysql_query("select * from bills where domain_id='$domain->id' and host_id='0'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
while ($b = @mysql_fetch_object($bs)) {
if (!$b->status) {
@mysql_query("delete from bills where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
} else {
@mysql_query("update bills set archived=1 where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
}
}
$tpl=GetTpl('email_touser_domain_delete', $user->lang);
$subject=$tpl[subject]; $template=$tpl[template];
if ($subject and $template) {
$varLng = LoadLanguageToVariable($user->lang);
$subject = str_replace('{domain}',$domain->domain,$subject);
$template = str_replace('{company_name}',$company_name,$template);
$template = str_replace('{company_url}',$company_url,$template);
$template = str_replace('{support_url}',$support_url,$template);
$template = str_replace('{domain}',$domain->domain,$template);
$template = str_replace('{reason}',$varLng[DomainDeleteReasonExpired],$template);
WriteMailLog($subject,$template,$user->id);
sendmail($user->email,$company_name,$manager_email,$subject,$template,'','',$tpl[type]);
sendmail($user->email2,$company_name,$manager_email,$subject,$template,'','',$tpl[type]);
}
}
}
if ($error) {
$errormsg = $error."rnrnВнимание! Домены, для которых автоматически не создана заявка на удаление, необходимо обработать вручную.";
$subject = "Cron: отчет об отправке заявки на удаление просроченных доменов";
$admEmails=GetAdminEmailsWhereTrueParam("sendcron");
if (count($admEmails) > 0) {
WriteMailLog($subject,$errormsg);
}
while (list($i,$em) = @each($admEmails)) {
sendmail($em,'',$manager_email,$subject,$errormsg);
}
}
}
# Уведомление менеджеру об окончании тестового периода у клиента / Удаление просроченных тестовых аккаунтов
$orders = @mysql_query("select *,TO_DAYS(todate)-TO_DAYS(NOW()) as leftdays from orders where archived=0 and todate <> '0000-00-00' AND testPeriod='1' AND TO_DAYS(todate)-TO_DAYS(NOW())<=-1") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($orders) > 0) {
$error = "";
while ($order = mysql_fetch_object($orders)) {
$user = GetUserById($order->uid);
$tarif = GetTarifById($order->tarif);
if ($cronSendAdminEndOrder and $order->leftdays == "-1") {
$template="У клиента $user->login закончился тестовый период по тарифному плану $tarif->name для домена $order->domain.rnrn--rnRootPanel";
$subject="Уведомление об окончании тестового периода";
$admEmails=GetAdminEmailsWhereTrueParam("sendremind");
if (count($admEmails) > 0) {
WriteMailLog($subject,$template);
}
while (list($i,$em) = @each($admEmails)) {
sendmail($em,'',$manager_email,$subject,$template);
}
}
if ($order->serverlogin and $order->serverid) {
$server = GetServers($order->serverid);
if ($tarif->autodeletetest and $cronAutoDeleteTest) {
if (deleteUser($order->id)) {
@mysql_query("update orders set testPeriod='0',todate='0000-00-00',serverlogin='',serverpassword='',serverid='' where id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
$error = $error . "+ Тестовый аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) автоматически удален на сервере ($server->name).rn";
} else {
$error = $error . "- Тестовый аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удален на сервере ($server->name). Ошибка: $GLOBALerror. Сделайте это вручную.rn";
}
} else if (!$cronAutoDeleteTest) {
$error = $error . "- Тестовый аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удален на сервере ($server->name), т.к. эта возможность отключена в настройках Cron'а.rn";
} else if (!$tarif->autodeletetest) {
$error = $error . "- Тестовый аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удален на сервере ($server->name), т.к. эта возможность отключена в настройках тарифного плана.rn";
}
} else {
$error = $error . "- Тестовый аккаунт для заказа ID #$order->id ($order->domain) не удален автоматически, т.к. не указан логин на сервере либо не указан сервер.rn";
}
}
if ($error) {
$errormsg = $error."rnrnВнимание! Тестовые аккаунты, не удаленные автоматически на сервере, необходимо удалить вручную.";
$subject = "Cron: отчет об удалении тестовых аккаунтов";
$admEmails=GetAdminEmailsWhereTrueParam("sendcron");
if (count($admEmails) > 0) {
WriteMailLog($subject,$errormsg);
}
while (list($i,$em) = @each($admEmails)) {
sendmail($em,'',$manager_email,$subject,$errormsg);
}
}
}
# Удаляем заказы на товар у которых оплаченный срок истек и они не продлены.
if ($cronDeleteOrderShop and intval($cronDeleteOrderShopDay) > 0) {
$error = "";
$orders = @mysql_query("select * from orders_shop where startdate <> '0000-00-00' AND NOT(todate='0000-00-00') AND (TO_DAYS(todate)-TO_DAYS(NOW())<=-$cronDeleteOrderShopDay)") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($orders) > 0) {
while ($order = mysql_fetch_object($orders)) {
$shopItem = GetShopItemById($order->item);
$user = GetUserById($order->uid);
if ($shopItem->costtype != "one") {
if ($shopItem->type == "avdesk" or $shopItem->type == "avdesk6") {
if ($order->field1) {
if (deleteShopOrder($order->id, 0)) {
$error = $error . "+ Аккаунт $order->field1 для заказа на товар ID #$order->id ($shopItem->name) автоматически удален на сервере.rn";
} else {
$error = $error . "- Аккаунт $order->field1 для заказа на товар ID #$order->id ($shopItem->name) не удален на сервере. Сделайте это вручную.rn";
}
} else {
$error = $error . "- Аккаунт $order->field1 для заказа на товар ID #$order->id ($shopItem->name) не был удалён автоматически, т.к. не указан логин на сервере.rn";
}
$error = $error . " Заказ и все счета, относящиеся к нему, удалены.rn";
@mysql_query("delete from orders_shop where id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
$bs = @mysql_query("select * from bills where shop_id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
while ($b = @mysql_fetch_object($bs)) {
if (!$b->status) {
@mysql_query("delete from bills where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
} else {
@mysql_query("update bills set archived=1 where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
}
}
$tpl=GetTpl('email_touser_shop_delete', $user->lang);
$subject=$tpl[subject]; $template=$tpl[template];
if ($subject and $template) {
$varLng = LoadLanguageToVariable($user->lang);
$template = str_replace('{company_name}',$company_name,$template);
$template = str_replace('{company_url}',$company_url,$template);
$template = str_replace('{support_url}',$support_url,$template);
$template = str_replace('{item}',$shopItem->name,$template);
$template = str_replace('{reason}',$varLng[ShopDeleteReasonExpired],$template);
WriteMailLog($subject,$template,$user->id);
sendmail($user->email,$company_name,$manager_email,$subject,$template,'','',$tpl[type]);
sendmail($user->email2,$company_name,$manager_email,$subject,$template,'','',$tpl[type]);
}
}
}
}
if ($error) {
$errormsg = $error."nnВнимание! Аккаунты, не удаленные автоматически на сервере, необходимо удалить вручную.";
$subject = "Cron: отчет об удалении заказов на товары, истекших $cronDeleteOrderShopDay дней назад";
$admEmails=GetAdminEmailsWhereTrueParam("sendcron");
if (count($admEmails) > 0) {
WriteMailLog($subject,$errormsg);
}
while (list($i,$em) = @each($admEmails)) {
sendmail($em,'',$manager_email,$subject,$errormsg);
}
}
}
}
# Удаляем заказы у которых оплаченный срок истек и они не продлены. Если вместе с хостингом заказан домен, то заказ на домен оставляем.
if ($cronDeleteOrder and intval($cronDeleteOrderDay) > 0) {
$error = "";
$orders = @mysql_query("select * from orders where archived=0 and startdate <> '0000-00-00' AND (TO_DAYS(todate)-TO_DAYS(NOW())<=-$cronDeleteOrderDay)") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
if (mysql_num_rows($orders) > 0) {
while ($order = mysql_fetch_object($orders)) {
if ($order->serverlogin and $order->serverid) {
$server = GetServers($order->serverid);
$tarif = GetTarifById($order->tarif);
if ($tarif->autodelete and $cronAutoDelete) {
if (deleteUser($order->id, 0)) {
$error = $error . "+ Аккаунт $order->serverlogin автоматически удален на сервере ($server->name).rn";
} else {
$error = $error . "- Аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удален на сервере ($server->name). Сделайте это вручную.rn";
}
} else if (!$cronAutoDelete) {
$error = $error . "- Аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удалён на сервере ($server->name), т.к. эта возможность отключена в настройках Cron'а.rn";
} else if (!$tarif->autodelete) {
$error = $error . "- Аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не удалён на сервере ($server->name), т.к. эта возможность отключена для тарифного плана.rn";
}
} else {
$error = $error . "- Аккаунт $order->serverlogin для заказа ID #$order->id ($order->domain) не был удалён автоматически, т.к. не указан логин на сервере либо не указан сервер.rn";
}
$error = $error . " Заказ и все счета, относящиеся к нему, удалены. rn";
if ($order->domain_reg == "1" or $order->domain_reg == "3") {
$domain = GetDomainByDomain("$order->domain");
@mysql_query("update orders_domains set host_id='0' where host_id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
@mysql_query("update bills set host_id='0', host_srok='0', money_host='0', money_addons='0' where host_id='$order->id' and domain_id='$domain->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
}
@mysql_query("update orders set archived=1 where id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
@mysql_query("update servers_ips set order_id='0',isMain='0' where order_id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
$bs = @mysql_query("select * from bills where host_id='$order->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
while ($b = @mysql_fetch_object($bs)) {
if (!$b->status) {
@mysql_query("delete from bills where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
} else {
@mysql_query("update bills set archived=1 where id='$b->id'") or die("File: ".__FILE__."<BR>Line: ".__LINE__."<BR>MySQL Error: ".mysql_error());
}
}
}
if ($error) {
$errormsg = $error."nnВнимание! Аккаунты, не удаленные автоматически на сервере, необходимо удалить вручную.";
$subject = "Cron: отчет об удалении заказов, истекших $cronDeleteOrderDay дней назад";
$admEmails=GetAdminEmailsWhereTrueParam("sendcron");
if (count($admEmails) > 0) {
WriteMailLog($subject,$errormsg);
}
while (list($i,$em) = @each($admEmails)) {
sendmail($em,'',$manager_email,$subject,$errormsg);
}
}
}
}
mclose();
?>