ื ื™ืชื•ืง ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืžืฉืชืžืฉื™ื ื‘-ISPManager5 lite ืœืœื BILLmanager

ื‘ื”ืชื—ืฉื‘ you

  1. ืฉืจืช VPS ืขื ืจื™ืฉื™ื•ืŸ ืชืžื™ื“ื™ ispmanager lite 5
  2. 10-20 ืžืฉืชืžืฉื™ื ืœืฉืจืช
  3. ื™ื•ืžืŸ ื’ื•ื’ืœ ืขื ืชื–ื›ื•ืจื•ืช ืงื‘ื•ืขื•ืช ืœืžื™ ืฉื ื’ืžืจ ืœื”ื ื”ืื™ืจื•ื—
  4. ื—ื‘ืœ ืœืฉืœื ืขืœ ื›ืœ ื“ื‘ืจ ืื—ืจ, ื‘ืžื™ื•ื—ื“ ืขื ืžื ื•ื™.

ื”ืžื˜ืจื” ื”ื™ื ืœื”ื™ืคื˜ืจ ืžื™ื•ืžืŸ ื’ื•ื’ืœ ื•ืชื–ื›ื•ืจื•ืช ื™ื“ื ื™ื•ืช ืœืœืงื•ื— ืฉื”ื•ื ืฆืจื™ืš ืœืฉืœื ืขื‘ื•ืจ ืื™ืจื•ื—. ืฉื—ืจืจื• ืืช ืขืฆืžื›ื ืž"ืชื ื• ืœื• ืœืขื‘ื•ื“ ืขื•ื“ ืงืฆืช, ื”ื•ื ื™ืฉืœื ื‘ืงืจื•ื‘", "ื–ื” ืื™ื›ืฉื”ื• ืœื ื ื•ื— ืœื›ื‘ื•ืช ืืช ื–ื”", ื•ื”ืคืงื™ื“ื• ื–ืืช ื‘ื™ื“ื™ ืžื›ื•ื ื” ื—ืกืจืช ื ืฉืžื”.

ื›ืžื•ื‘ืŸ ืฉืงื•ื“ื ื›ืœ ื—ื™ืคืฉืชื™ ื‘ื’ื•ื’ืœ ื•ืœื ืžืฆืืชื™ ืคืชืจื•ื ื•ืช, ื”ื›ืœ ื”ืกืชื›ื ื‘ืขื•ื‘ื“ื” ืฉืฆืจื™ืš ืœื”ื™ืจืฉื ืœ-BILLmanager, ืื‘ืœ ื ืงื•ื“ื” ืžืก' 4 ืžืื•ื“ ื—ืฉื•ื‘ื” ื•ืจืฆื™ื ื™ืช ืขื‘ื•ืจื™, ืœื ืืงื‘ืœ ืœื”ื™ืคื˜ืจ ืžืžื ื•. ื•ื”ื”ื—ืœื˜ื” ื”ืชื‘ืจืจื” ื›ืœ ื›ืš ืœื ืงืฉื”.

ืื– ืžื” ืื ื—ื ื• ืขื•ืฉื™ื?

ืฆื•ืจ ืชื™ืงื™ื™ื” users.addon, ื‘ืกืคืจื™ื™ืช /usr/local/mgr5/etc/sql/, ืฉื ื™ ืงื‘ืฆื™ื ืจื™ืงื™ื:

  1. ืชืืจื™ืš ืชืฉืœื•ื
  2. uwemail

ื–ื” ื™ื•ืจื” ืขืœ ื”ืคืื ืœ ืœื™ืฆื•ืจ ื‘ืžืกื“ ื”ื ืชื•ื ื™ื
/usr/local/mgr5/etc/ispmgr.db
ื‘ื˜ื‘ืœืช ื”ืžืฉืชืžืฉื™ื ื™ืฉ ืฉื ื™ ืฉื“ื•ืช ืชื•ืืžื™ื ืฉื‘ื”ื ื™ื™ื›ืชื‘ื• ื”ืขืจื›ื™ื ืžืคืื ืœ ื”ื ื™ื”ื•ืœ.

ืฆื•ืจ ืงื•ื‘ืฅ ื‘ืฉื ispmgr_mod_pay_data.xml ื‘ืชื™ืงื™ื™ื” /usr/local/mgr5/etc/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

ืื ื• ืžืงื‘ืœื™ื:

ื ื™ืชื•ืง ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืžืฉืชืžืฉื™ื ื‘-ISPManager5 lite ืœืœื BILLmanager

ื‘ืฉื“ื•ืช ืื ื• ื›ื•ืชื‘ื™ื ืขื“ ืื™ื–ื” ื™ื•ื ื”ืื™ืจื•ื— ืืžื•ืจ ืœืขื‘ื•ื“, ื•ืื™ื–ื” ืžื™ื™ืœ ืฉืœ ื”ืžืฉืชืžืฉ, ืœืืŸ ืœืฉืœื•ื— ืชื–ื›ื•ืจื•ืช ืฉื”ืื™ืจื•ื— ื™ืกืชื™ื™ื ื‘ืงืจื•ื‘.

ื›ืขืช ืขืœื™ื ื• ืœื™ืฆื•ืจ ืกืงืจื™ืคื˜ ืฉื™ื–ื›ื™ืจ ืœืžืฉืชืžืฉื™ื ืฉื”ืื™ืจื•ื— ืžืกืชื™ื™ื ื‘ืžืจื•ื•ื—ื™ื ืžืกื•ื™ืžื™ื. ื”ื•ื“ืข ืœืžื ื”ืœ ื”ืžืขืจื›ืช ืฉื”ืื™ืจื•ื— ืžืกืชื™ื™ื. ื”ื•ื“ืข ืœืžืฉืชืžืฉ ื•ืœืžื ื”ืœ ื”ืžืขืจื›ืช ืฉื”ืžืฉืชืžืฉ ืžื•ืฉื‘ืช.

ืื ื™ ืื•ื”ื‘ 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 ั‡ั‚ะพ ะฑั‹ ะดะฐะฝะฝั‹ะต ัƒะดะฐะปัะปะธััŒ ั‡ะตั€ะตะท ะฝะตะบะพั‚ะพั€ะพะต ะฒั€ะตะผั, ะฝะพ ะผะฝะต ัั‚ะพ ะฝะต ะฝัƒะถะฝะพ
}

ืื ื—ื ื• ืฉื•ืžืจื™ื ืืช ื”ืกืงืจื™ืคื˜ ื”ื–ื” ื‘ื›ืœ ืžืงื•ื ื•ืงื•ืจืื™ื ืœื• ืื™ืš ืฉืื ื—ื ื• ืจื•ืฆื™ื, ื•ืžื•ืกื™ืคื™ื ืžืฉื™ืžืช cron ืœืงืจื•ื ืœื• ืคืขื ื‘ื™ื•ื. ื”ื›ืœ ืžื•ื›ืŸ.

ืขื›ืฉื™ื• ืžืฆืคื•ื ื™ ื ืงื™, ื”ืงืจืคื“ื” ืžืจื•ืฆื”, ื•ืœื ื ื’ืจืžืชื™ ืขืœื•ื™ื•ืช ื ื•ืกืคื•ืช.

ื›ืœ ืฉื ื•ืชืจ ื”ื•ื ืœืžืœื ืืช ื”ื ืชื•ื ื™ื ื‘ืžืฉืชืžืฉื™ื ื‘ืื™ื–ื” ืชืืจื™ืš ืฉื•ืœื ื”ืื™ืจื•ื—, ื•ืืช ื”ืžื™ื™ืœ ืฉืœ ื”ืžืฉืชืžืฉื™ื ืœืืŸ ืœืฉืœื•ื— ืชื–ื›ื•ืจื•ืช ืœืžืฉืชืžืฉื™ื.

ืฉืžื— ืื ื–ื” ืขื•ื–ืจ ืœืžื™ืฉื”ื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”