game/_incl_data/crons/cshop_sellToShop.php
2023-01-10 18:30:35 +02:00

60 lines
3.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Core\Db;
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'autoload.php';
/**
* CRON Комиссионного магазина
* Если предмет висит уже 2 и более недель, продавать предмет за 50% от его стоимости с учетом износа.
* Деньги отсылаются на почту.
*
* Примерно вот так должен выглядеть нормальный крон. Меньше левых зависимостей, нет подтягиванию половины движка.
* Всё ещё не идеально, но уже неплохо.
*
* Запуск раз в минуту.
*
* @author Ivor Barhansky <me@lopar.space>
* @todo проверить на конфликты с cshop_returnToOwner.
* @todo Вернуть запросы взад и вывести их из циклов. "нормальный крон", ёпт, под какими веществами я это делал?
*/
const TIME_LAST = 86400; // 1 day
const AUC = '<span style="color: #009966;">Филиал Аукциона</span>';
const AUC_WIN = 'Вы выиграли торги. Предмет "%s" за <b>%s кр.</b> был добавлен к вам в инвентарь.';
const AUC_SELL = 'Предмет "%s" был продан на торгах, <b>%s</b> кр. за товар отправлены вам по почте.';
const AUC_SELL_LOG = 'Филиал Аукциона: Предмет "%s" был продан за <b>%s кр</b>.';
const AUC_NOT_SELL = 'Предмет "%s" не был продан, он возвращен вам в инвентарь.';
$query = [ //all queries
'insert into chat (new, login, `to`, text, time, type) values (1, ?, ?, ?, unix_timestamp(), 6)',
'select * from items_auc where time_end = 0 and time < unix_timestamp() - ? order by user_buy',
'select login from users where id = ?',
'select count(*) from users where id = ?',
'update items_users set uid = ?, lastUPD = unix_timestamp() where (id = ? or inGroup = ?) and uid = 0',
'insert into items_users (`delete`, item_id, 1price, uid, lastUPD, `data`) values (0, 1220, ?, ?, unix_timestamp(), ?)',
'insert into post (uid, sender_id, time, money, text) values (?, 0, unix_timestamp(), ?, ?)',
'update items_auc set time_end = unix_timestamp() where id = ?',
];
$sp = Db::getRow($query[1], [TIME_LAST]);
foreach ($sp as $pl) {
if ($pl['x'] > 0) {
$pl['name'] .= ' (x' . $pl['x'] . ')';
}
$userLogin = Db::getValue($query[2], [$pl['uid']]);
if ($pl['user_buy'] && Db::getValue($query[3], [$pl['user_buy']])) {
Db::sql($query[4], [$pl['user_buy'], $pl['item_id'], $pl['item_id']]);
Db::sql($query[0], [AUC, $pl['user_buy'], sprintf(AUC_WIN, $pl['name'], $pl['price'])]);
if ($userLogin) {
Db::sql($query[0], [AUC, $userLogin, sprintf(AUC_SELL, $pl['name'], $pl['price'])]);
Db::sql($query[5], [$pl['price'], '-51' . $pl['uid'], '']);
Db::sql($query[6], [$pl['uid'], $pl['price'], sprintf(AUC_SELL_LOG, $pl['name'], $pl['price'])]);
}
} elseif ($userLogin) {
Db::sql($query[4], [$pl['uid'], $pl['item_id'], $pl['item_id']]);
Db::sql($query[0], [AUC, $userLogin, sprintf(AUC_NOT_SELL, $pl['name'])]);
}
Db::sql($query[7], [$pl['id']]);
}