แž€แžถแžšแž•แŸ’แžแžถแž…แŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸ…แž€แŸ’แž“แžปแž„ ISPManager5 lite แžŠแŸ„แž™แž‚แŸ’แž˜แžถแž“ BILLmanager

แž”แžถแž“แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แŸ–

  1. แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS แžŠแŸ‚แž›แž˜แžถแž“แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽแžขแž…แžทแž“แŸ’แžแŸ’แžšแŸƒแž™แŸ ispmanager lite 5
  2. แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ 10-20 แž“แžถแž€แŸ‹แž€แŸ’แž“แžปแž„แž˜แžฝแž™แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ
  3. แž”แŸ’แžšแžแžทแž‘แžทแž“ Google แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแžšแŸ†แž›แžนแž€แž‡แžถแž”แŸ’แžšแž…แžถแŸ†แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แžŠแŸ‚แž›แž‡แžทแžแžขแžŸแŸ‹ แž”แž„แŸ’แž แŸ„แŸ‡
  4. แžœแžถแž‡แžถแž€แžถแžšแžขแžถแž˜แŸ‰แžถแžŸแŸ‹แž€แŸ’แž“แžปแž„แž€แžถแžšแž…แŸ†แžŽแžถแž™แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แžœแžธแž•แŸ’แžŸแŸแž„แž‘แŸ€แž แž‡แžถแž–แžทแžŸแŸแžŸแž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž‡แžถแžœแŸ”

แž‚แŸ„แž›แžŠแŸ…แž‚แžบแžŠแžพแž˜แŸ’แž”แžธแž€แž˜แŸ’แž…แžถแžแŸ‹แž”แŸ’แžšแžแžทแž‘แžทแž“ Google แž“แžทแž„แž€แžถแžšแžšแŸ†แž›แžนแž€แžŠแŸ„แž™แžŠแŸƒแžŠแž›แŸ‹แžขแžแžทแžแžทแž‡แž“แžแžถแž‚แžถแžแŸ‹แžแŸ’แžšแžผแžœแž”แž„แŸ‹แž”แŸ’แžšแžถแž€แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แž„แŸ’แž แŸ„แŸ‡แŸ” แžŠแŸ„แŸ‡แž›แŸ‚แž„แžแŸ’แž›แžฝแž“แžขแŸ’แž“แž€แž–แžธ "แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž‚แžถแžแŸ‹แž’แŸ’แžœแžพแž€แžถแžšแž”แž“แŸ’แžแžทแž…แž‘แŸ€แž แž‚แžถแžแŸ‹แž“แžนแž„แž”แž„แŸ‹แž”แŸ’แžšแžถแž€แŸ‹แž†แžถแž”แŸ‹แŸ—แž“แŸแŸ‡" "แžœแžถแžšแžขแžถแž€แŸ‹แžšแžขแžฝแž›แž€แŸ’แž“แžปแž„แž€แžถแžšแž”แžทแž‘แžœแžถ" แž แžพแž™แž”แŸ’แžšแž‚แž›แŸ‹แžœแžถแž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แžŠแŸ‚แž›แž‚แŸ’แž˜แžถแž“แž–แŸ’แžšแž›แžนแž„แŸ”

แž‡แžถโ€‹แž€แžถแžšโ€‹แž–แžทแžโ€‹แžŽแžถแžŸแŸ‹ แžŠแŸ†แž”แžผแž„โ€‹แžแŸ’แž‰แžปแŸ†โ€‹แž”แžถแž“ Googled แž แžพแž™โ€‹แž”แžถแž“โ€‹แžŸแŸ’แžœแŸ‚แž„โ€‹แžšแž€ แž”แŸ‰แžปแž“แŸ’แžแŸ‚โ€‹แž˜แžทแž“โ€‹แž”แžถแž“โ€‹แžšแž€โ€‹แžƒแžพแž‰โ€‹แžŠแŸ†แžŽแŸ„แŸ‡โ€‹แžŸแŸ’แžšแžถแž™โ€‹แžŽแžถโ€‹แž˜แžฝแž™ แžœแžถโ€‹แž”แžถแž“โ€‹แž–แžปแŸ‡โ€‹แž€แž‰แŸ’แž‡แŸ’แžšแŸ„แž›โ€‹แž‘แŸ…โ€‹แž“แžนแž„โ€‹แž€แžถแžšโ€‹แž–แžทแžโ€‹แžŠแŸ‚แž›โ€‹แžขแŸ’แž“แž€โ€‹แžแŸ’แžšแžผแžœโ€‹แž€แžถแžšโ€‹แž‡แžถแžœ BILLmanager แž”แŸ‰แžปแž“แŸ’แžแŸ‚โ€‹แž…แŸ†แžŽแžปแž…โ€‹แž‘แžธ 4 แž‚แžบโ€‹แžŸแŸ†แžแžถแž“แŸ‹โ€‹แž“แžทแž„โ€‹แž’แŸ’แž„แž“แŸ‹แž’แŸ’แž„แžšโ€‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹โ€‹แžแŸ’แž‰แžปแŸ† แžแŸ’แž‰แžปแŸ†โ€‹แž“แžนแž„โ€‹แž˜แžทแž“โ€‹แž‘แž‘แžฝแž›โ€‹แž”แžถแž“โ€‹แž‘แŸแŸ” แž€แž˜แŸ’แž…แžถแžแŸ‹แžœแžถแŸ” แž แžพแž™โ€‹แž€แžถแžšโ€‹แžŸแž˜แŸ’แžšแŸแž…โ€‹แž…แžทแžแŸ’แžโ€‹แž”แžถแž“โ€‹แž”แŸ’แžšแŸ‚โ€‹แž€แŸ’แž›แžถแž™โ€‹แž‘แŸ…โ€‹แž‡แžถโ€‹แž˜แžทแž“โ€‹แž–แžทแž”แžถแž€โ€‹แž“แŸ„แŸ‡โ€‹แž‘แŸแŸ”

แžŠแžผแž…แŸ’แž“แŸแŸ‡แžแžพแž™แžพแž„แž’แŸ’แžœแžพแžขแŸ’แžœแžธ?

แž”แž„แŸ’แž€แžพแž folder user.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 = "admin@gmail.com"; // 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