One-Punch Scripts

Позволяют вам немного побыть Сайтамой сохранять свои заготовки кода, для отладки в консоли разработчика или последующего вызова из RemoteAPI.

Вполне себе очевидно, что управлять ими вы можете в «Консоли разработчика» а именно в «PHP консоли». Также вы можете при желании импортировать ваши старые шаблоны кода, если они у вас были. Важно: после импорта шаблоны кода удаляются из базы. Да, при создании и редактировании скриптов все поля являются объязательными. Поле alias должно быть уникальным и содержать только латиницу и цифры. Имя вы пишете только для себя, чтобы понимать что это за кусок кода.

При помощи One-Punch скриптов вы можете делать практически все, что могли бы делать при помощи любого модуля. Например ресет какого-то юзера раз в 5 минут :)

Собственно вот так мы это вызываем при помощи crontab -e

*/5 * * * *     /bin/ubapi "onepunch&param=test1"

А какие практические кейсы вы можете реализовать? Да какие угдно, для реализации нужной вам бизнес-логки. Например на их базе вы можете сделать свое собственное REST API.

и получать данные о нужных вам полях пользователя, из ваших внешних приложений при помощи соответствующего URL. Для мобилки например так:

?module=remoteapi&key=ВАШ_СЕРИЙНИК&action=onepunch&param=getuserfield&login=sometestuser&field=mobile

А можно делать что-то более понятное? Ну да. Вот вам например ежедневная нотификация в Телеграм о произошедших за день штуках:

$telegramChatIds = array('11111111', '22222222');
 
$message = '';
$telegram = new UbillingTelegram();
$allUserData = zb_UserGetAllData();
 
 
//user signups
$userreg = new nya_userreg();
$userreg->where('date', 'LIKE', curdate() . '%');
$regsCount = $userreg->getFieldsCount();
$message .= 'Користувачів зареєстровано сьогодні: ' . $regsCount . '\r\n ';
 
//active user stats
if (!empty($allUserData)) {
    $activeUsers = 0;
    foreach ($allUserData as $io => $userData) {
        if (bb_userIsActive($userData) == 1) {
            $activeUsers++;
        }
    }
 
    $message .= 'Всього активних користувачів на даний момент: ' . $activeUsers . '\r\n ';
}
 
//payments stats
$payments = new nya_payments();
$payments->where('date', 'LIKE', curdate() . '%');
$payments->where('summ', '>', '0');
$paymentsCount = $payments->getFieldsCount('id', false);
$paymentsSum = $payments->getFieldsSum('summ');
$message .= 'Сьогодні отримано ' . $paymentsCount . ' платежів на суму ' . $paymentsSum .' грн.'. '\r\n';
 
//payments corrections
$paycorr = new nya_paymentscorr();
$paycorr->where('date', 'LIKE', curdate() . '%');
$allCorr = $paycorr->getAll();
if (!empty($allCorr)) {
    $message .= '==========' . '\r\n ';
    $message .= 'Корегування балансу: ' . '\r\n ';
    foreach ($allCorr as $io => $each) {
        if (!ispos($each['note'], 'DDT')) {
            $message .= '- ' . $allUserData[$each['login']]['fulladress'] . ', ' . $each['summ']
                    . ' грн. (було ' . $each['balance'] . ' стало ' . ($each['balance'] + $each['summ']) . ') '
                    . $each['admin'] . ' ' . $each['note'] . ' ' . '\r\n ';
        }
    }
}
 
if (!empty($message)) {
    foreach ($telegramChatIds as $eachChatId) {
        $telegram->sendMessage($eachChatId, $message, false, 'BIGBRO');
        //deb($message);
    }
}
 
function bb_userIsActive($userData) {
    $result = '';
    if (($userData['Cash'] >= '-' . $userData['Credit']) AND ( $userData['AlwaysOnline'] == 1) AND ( $userData['Passive'] == 0) AND ( $userData['Down'] == 0)) {
        $result = 1;
    }
    if (($userData['Cash'] < '-' . $userData['Credit']) AND ( $userData['AlwaysOnline'] == 1) AND ( $userData['Passive'] == 0) AND ( $userData['Down'] == 0)) {
        $result = 0;
    }
    if (($userData['Cash'] < '-' . $userData['Credit']) AND ( $userData['AlwaysOnline'] == 1) AND ( $userData['Passive'] == 0) AND ( $userData['Down'] == 1)) {
        $result = 0;
    }
    if ($userData['Passive'] == 1) {
        $result = -1;
    }
    return ($result);
}

И соответственно ее ежедневный вызов:

59 19 * * *   /bin/ubapi "onepunch&param=bigbro"
onepunch.txt · Последние изменения: 2019/11/21 14:25 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki