เดจเตฝเดเดฟเดฏเดคเต:
- เดชเตเตผเดชเตเดเตเดตเตฝ เดฒเตเดธเตปเดธเตเดณเตเดณ VPS เดธเตเตผเดตเตผ ispmanager lite 5
- เดเดฐเต เดธเตเตผเดตเดฑเดฟเดจเต 10-20 เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ
- เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เดคเตเตผเดจเตเดจเดตเตผเดเตเดเดพเดฏเดฟ เดชเดคเดฟเดตเต เดเตผเดฎเตเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเตเดเดณเตเดฎเดพเดฏเดฟ เดเตเดเดฟเตพ เดเดฒเดฃเตเดเตผ
- เดฎเดฑเตเดฑเตเดจเตเดคเดฟเดจเตเด เดชเดฃเด เดจเตฝเดเตเดจเตเดจเดคเต เดฒเดเตเดเดพเดเดฐเดฎเดพเดฃเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดธเดฌเตเดธเตเดเตเดฐเดฟเดชเตเดทเตป.
เดเตเดฒเดฏเดจเตเดฑเดฟเดจเต เดนเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดจเดพเดฏเดฟ เดชเดฃเด เดจเตฝเดเตเดฃเตเด Google เดเดฒเดฃเตเดเดฑเตเด เดฎเดพเดจเตเดตเตฝ เดฑเดฟเดฎเตเตปเดกเดฑเตเดเดณเตเด เดเดดเดฟเดตเดพเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดฒเดเตเดทเตเดฏเด. "เด
เดตเดจเต เดเตเดฑเดเตเดเตเดเตเดเดฟ เดเตเดฒเดฟ เดเตเดฏเตเดฏเดเตเดเต, เด
เดตเตป เดเดเตป เดชเดฃเด เดจเตฝเดเตเด", "เดเดคเต เดเดซเดพเดเตเดเตเดจเตเดจเดคเต เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เด
เดธเตเดเดฐเตเดฏเดฎเดพเดฃเต" เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดตเดฏเด เดฎเตเดเดฟเดคเดฐเดพเดตเตเด, เดเตเดเดพเดคเต เดเดคเต เดเดคเตเดฎเดพเดตเดฟเดฒเตเดฒเดพเดคเตเดค เดฏเดจเตเดคเตเดฐเดคเตเดคเต เดเตฝเดชเตเดชเดฟเดเตเดเตเด.
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดพเตป เดเดฆเตเดฏเด เดเตเดเดฟเตพ เดเตเดฏเตโเดคเต เดคเดฟเดฐเดเตเดเต, เดชเดเตเดทเต เดชเดฐเดฟเดนเดพเดฐเดเตเดเดณเตเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดจเดฟเดเตเดเตพ BILLmanager-เดฒเตเดเตเดเต เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต เดเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเตเดเตเดเต เดเดฒเตเดฒเดพเด เดคเดฟเดณเดเตเดเตเดฎเดฑเดฟเดฏเตเดจเตเดจเต, เดชเดเตเดทเต เดชเตเดฏเดฟเดจเตเดฑเต เดจเดฎเตเดชเตผ 4 เดเดจเดฟเดเตเดเต เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเดเดคเตเด เดเตเดฐเดตเดฎเตเดณเตเดณเดคเตเดฎเดพเดฃเต, เดเดจเดฟเดเตเดเต เด
เดคเต เดฒเดญเดฟเดเตเดเดฟเดฒเตเดฒ เด
เดคเดฟเดจเต เดเดดเดฟเดตเดพเดเตเดเตเด. เดคเตเดฐเตเดฎเดพเดจเด เด
เดคเตเดฐ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดเดพเดฐเตเดฏเดฎเดฒเตเดฒเตเดจเตเดจเต เดคเตเดณเดฟเดเตเดเต.
เด เดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดเดจเตเดคเต เดเตเดฏเตเดฏเตเด?
/usr/local/mgr5/etc/sql/ เดกเดฏเดฑเดเตโเดเดฑเดฟเดฏเดฟเตฝ user.addon เดเดจเตเดจ เดซเตเตพเดกเตผ เดธเตเดทเตโเดเดฟเดเตเดเตเด, เดฐเดฃเตเดเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเดฏเดฒเตเดเตพ:
- เด เดเดฏเตโเดเตเดเตเดจเตเดจ_เดคเตเดฏเดคเดฟ
- uwemail
เดเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดชเดพเดจเดฒเดฟเดจเตเดเต เดเดตเดถเตเดฏเดชเตเดชเตเดเตเด
/usr/local/mgr5/etc/ispmgr.db
เดเดชเดฏเตเดเตเดคเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เด
เดกเตโเดฎเดฟเตป เดชเดพเดจเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดดเตเดคเตเดจเตเดจ เดฐเดฃเตเดเต เด
เดจเตเดฌเดจเตเดง เดซเตเตฝเดกเตเดเตพ เดเดฃเตเดเต.
เดเดณเตเดณเดเดเตเดเดเตเดเดณเตเดณเตเดณ /usr/local/mgr5/etc/xml เดซเตเตพเดกเดฑเดฟเตฝ ispmgr_mod_pay_data.xml เดเดจเตเดจ เดชเตเดฐเดฟเตฝ เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด.
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<metadata name="user.edit">
<form>
<page name="main">
<field name="pay_date">
<input type="text" name="pay_date"/>
</field>
<field name="uwemail">
<input type="text" name="uwemail"/>
</field>
</page>
</form>
</metadata>
<lang name="ru">
<messages name="user.edit">
<msg name="pay_date" sqlname="pay_date">ะะฟะปะฐัะตะฝะพ ะดะพ</msg>
<msg name="uwemail" sqlname="uwemail">ะะพะปัะทะพะฒะฐัะตะปััะบะธะน email</msg>
</messages>
</lang>
<lang name="en">
<messages name="user.edit">
<msg name="pay_date" sqlname="pay_date">Paid before</msg>
<msg name="uwemail" sqlname="uwemail">User email</msg>
</messages>
</lang>
</mgrdata>
เดเดคเต เดชเดพเดจเดฒเดฟเดจเต เดเดฐเต เดจเดฟเดฏเดฎเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ เดเดเตเดเดณเตเดเต เดซเตเตฝเดกเตเดเตพ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดกเดฟเดฑเตเดฑเต เดซเตเดฎเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด.
เดชเดพเดจเตฝ เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตเดฏเตเด:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเต:
เดซเตเตฝเดกเตเดเดณเดฟเตฝ เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เดเดคเต เดฆเดฟเดตเดธเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดฃเด, เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดคเต เดเดฎเตเดฏเดฟเตฝ, เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เดเดเตป เด
เดตเดธเดพเดจเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเตผเดฎเตเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเตเดเตพ เดเดตเดฟเดเต เด
เดฏเดฏเตโเดเตเดเดฃเด เดเดจเตเดจเดฟเดต เดตเดฐเต เดเดเตเดเตพ เดเดดเตเดคเตเดจเตเดจเต.
เดเดชเตเดชเตเตพ เดเดฟเดฒ เดเดเดตเตเดณเดเดณเดฟเตฝ เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เด เดตเดธเดพเดจเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเต เดเตผเดฎเตเดฎเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เด เดตเดธเดพเดจเดฟเดเตเดเตเดเดฏเดพเดฃเตเดจเตเดจเต เด เดกเตเดฎเดฟเดจเต เด เดฑเดฟเดฏเดฟเดเตเดเตเด. เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เด เดชเตเดฐเดพเดชเตเดคเดฎเดพเดเตเดเดฟเดฏเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฏเตเด เด เดกเตเดฎเดฟเดจเตเดฏเตเด เด เดฑเดฟเดฏเดฟเดเตเดเตเด.
เดเดพเตป เด เดคเดฟเตฝ php เดเดทเตเดเดชเตเดชเตเดเตเดเดฏเตเด เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดคเต.
<?php
$adminemail = "[email protected]"; // email ะฐะดะผะธะฝะฐ
$day_send_message = [30,7,5,3,1]; // ะทะฐ ัะบะพะปัะบะพ ะดะฝะตะน ะธ ั ะบะฐะบะพะน ะฟะตัะตะพะดะธัะฝะพัััั ะฑัะดะตั ะฝะฐะฟะพะผะธะฝะฐัั ะฟะพะปัะทะพะฒะฐัะตะปั ััะพ ั
ะพััะธะฝะณ ะทะฐะบะฐะฝัะธะฒะฐะตััั
$db = new SQLite3('/usr/local/mgr5/etc/ispmgr.db');
$results = $db->query('SELECT * FROM users WHERE active == "on" AND pay_date IS NOT NULL');
while ($user = $results->fetchArray()) {
$days_left=floor( ( strtotime($user['pay_date']) - time() ) / (60 * 60 * 24));
if(in_array($days_left, $day_send_message)){
if($user['uwemail'] != ""){
mail($user['uwemail'], 'ISPMANAGER ะทะฐะบะฐะฝัะธะฒะฐะตััั ั
ะพััะธะฝะณ ัะตัะตะท '.$days_left.' ะดะฝะตะนั', "ะขะตะบัั ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั ะพ ัะพะผ ััะพ ะพััะฐะปะพัั ััะพะปัะบะพ ัะพ ะดะฝะตะน");
}
}
if( $days_left == 3 ) {
mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " ะะฐะบะพะฝัะธััั ั
ะพััะธะฝะณ ัะตัะตะท ".$days_left." ะดะฝั");
}
if($days_left <= 0){
mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' ะัะบะปััะตะฝ');
exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
if( $user['uwemail'] != "" ) {
mail($user['uwemail'], 'ISPMANAGER ั
ะพััะธะฝะณ ะพัะบะปััะตะฝ', 'ะขะตะบัั ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั ััะพ ั
ะพััะธะฝะณ ะทะฐะบะพะฝัะธะปัั');
}
}
// ะฟัะธ ะถะตะปะฐะฝะธะธ ะผะพะถะฝะพ ะตัะต ะฝะฐะฟะธัะฐัั ะฝะตะฑะพะปััะพะน IF ััะพ ะฑั ะดะฐะฝะฝัะต ัะดะฐะปัะปะธัั ัะตัะตะท ะฝะตะบะพัะพัะพะต ะฒัะตะผั, ะฝะพ ะผะฝะต ััะพ ะฝะต ะฝัะถะฝะพ
}
เดเดเตเดเตพ เด เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดตเดฟเดเตเดฏเตเด เดธเดเดฐเดเตเดทเดฟเดเตเดเต เดเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดตเดฟเดณเดฟเดเตเดเตเดเดฏเตเด เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เดเดฐเดฟเดเตเดเตฝ เดตเดฟเดณเดฟเดเตเดเดพเตป เดเดฐเต เดเตเดฐเตเตบ เดเดพเดธเตโเดเต เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฒเตเดฒเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดฃเต.
เดเดชเตเดชเตเตพ เดเดจเตเดฑเต เดฎเดจเดธเตเดธเดพเดเตเดทเดฟ เดตเตเดฏเดเตเดคเดฎเดพเดฃเต, เดชเตเดตเตป เดคเตเดชเตเดคเดจเดพเดฃเต, เด เดงเดฟเด เดเดฟเดฒเดตเตเดเดณเตเดจเตเดจเตเด เดเดพเตป เดตเดฐเตเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดนเตเดธเตเดฑเตเดฑเดฟเดเดเต เดชเดฃเด เดจเตฝเดเดฟเดฏ เดคเตเดฏเดคเดฟเดฏเดฟเดฒเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเดฟเดฒเต เดกเดพเดฑเตเดฑเดฏเตเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดเตผเดฎเตเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเตเดเตพ เด เดฏเดฏเตโเดเตเดเตเดฃเตเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดเดฎเตเดฏเดฟเดฒเตเด เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต.
เดเดฐเตเดฏเตเดเตเดเดฟเดฒเตเด เดธเดนเดพเดฏเดฟเดเตเดเดพเตฝ เดธเดจเตเดคเตเดทเด.
เด
เดตเดฒเดเดฌเด: www.habr.com