mirror of
				https://github.com/slawkens/myaac.git
				synced 2025-10-30 15:36:24 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			187 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Account Admin Tool
 | |
|  *
 | |
|  * @package   MyAAC
 | |
|  * @author    Slawkens <slawkens@gmail.com>
 | |
|  * @author    Lee
 | |
|  * @copyright 2020 MyAAC
 | |
|  * @link      https://my-aac.org
 | |
|  */
 | |
| 
 | |
| use MyAAC\Models\Account;
 | |
| 
 | |
| defined('MYAAC') or die('Direct access not allowed!');
 | |
| 
 | |
| $title = 'Mass Account Actions';
 | |
| 
 | |
| csrfProtect();
 | |
| 
 | |
| $hasCoinsColumn = $db->hasColumn('accounts', 'coins');
 | |
| $hasPointsColumn = $db->hasColumn('accounts', 'premium_points');
 | |
| $freePremium = $config['lua']['freePremium'];
 | |
| 
 | |
| function admin_give_points($points)
 | |
| {
 | |
| 	global $hasPointsColumn;
 | |
| 
 | |
| 	if (!$hasPointsColumn) {
 | |
| 		displayMessage('Points not supported.');
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	if (!Account::query()->increment('premium_points', $points)) {
 | |
| 		displayMessage('Failed to add points.');
 | |
| 		return;
 | |
| 	}
 | |
| 	displayMessage($points . ' points added to all accounts.', true);
 | |
| }
 | |
| 
 | |
| function admin_give_coins($coins)
 | |
| {
 | |
| 	global $hasCoinsColumn;
 | |
| 
 | |
| 	if (!$hasCoinsColumn) {
 | |
| 		displayMessage('Coins not supported.');
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	if (!Account::query()->increment('coins', $coins)) {
 | |
| 		displayMessage('Failed to add coins.');
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	displayMessage($coins . ' coins added to all accounts.', true);
 | |
| }
 | |
| 
 | |
| function admin_give_premdays($days)
 | |
| {
 | |
| 	global $db, $freePremium;
 | |
| 
 | |
| 	if ($freePremium) {
 | |
| 		displayMessage('Premium days not supported. Free Premium enabled.');
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	$value = $days * 86400;
 | |
| 	$now = time();
 | |
| 	// othire
 | |
| 	if ($db->hasColumn('accounts', 'premend')) {
 | |
| 		// append premend
 | |
| 		if (Account::where('premend', '>', $now)->increment('premend', $value)) {
 | |
| 			// set premend
 | |
| 			if (Account::where('premend', '<=', $now)->update(['premend' => $now + $value])) {
 | |
| 				displayMessage($days . ' premium days added to all accounts.', true);
 | |
| 				return;
 | |
| 			} else {
 | |
| 				displayMessage('Failed to execute set query.');
 | |
| 				return;
 | |
| 			}
 | |
| 		} else {
 | |
| 			displayMessage('Failed to execute append query.');
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	// tfs 0.x
 | |
| 	if ($db->hasColumn('accounts', 'premdays')) {
 | |
| 		// append premdays
 | |
| 		if (Account::query()->update(['premdays' => $days])) {
 | |
| 			// append lastday
 | |
| 			if (Account::where('lastday', '>', $now)->increment('lastday', $value)) {
 | |
| 				// set lastday
 | |
| 				if (Account::where('lastday', '<=', $now)->update(['lastday' => $now + $value])) {
 | |
| 					displayMessage($days . ' premium days added to all accounts.', true);
 | |
| 					return;
 | |
| 				} else {
 | |
| 					displayMessage('Failed to execute set query.');
 | |
| 					return;
 | |
| 				}
 | |
| 
 | |
| 				return;
 | |
| 			} else {
 | |
| 				displayMessage('Failed to execute append query.');
 | |
| 				return;
 | |
| 			}
 | |
| 		} else {
 | |
| 			displayMessage('Failed to execute set days query.');
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	// tfs 1.x
 | |
| 	if ($db->hasColumn('accounts', 'premium_ends_at')) {
 | |
| 		// append premium_ends_at
 | |
| 		if (Account::where('premium_ends_at', '>', $now)->increment('premium_ends_at', $value)) {
 | |
| 			// set premium_ends_at
 | |
| 			if (Account::where('premium_ends_at', '<=', $now)->update(['premium_ends_at' => $now + $value])) {
 | |
| 				displayMessage($days . ' premium days added to all accounts.', true);
 | |
| 				return;
 | |
| 			} else {
 | |
| 				displayMessage('Failed to execute set query.');
 | |
| 				return;
 | |
| 			}
 | |
| 		} else {
 | |
| 			displayMessage('Failed to execute append query.');
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	displayMessage('Premium Days not supported.');
 | |
| }
 | |
| 
 | |
| if (!empty(ACTION) && isRequestMethod('post')) {
 | |
| 
 | |
| 	$action = ACTION;
 | |
| 
 | |
| 	if (preg_match("/[^A-z0-9_\-]/", $action)) {
 | |
| 		displayMessage('Invalid action.');
 | |
| 	} else {
 | |
| 		$value = isset($_POST['value']) ? intval($_POST['value']) : 0;
 | |
| 
 | |
| 		if (!$value) {
 | |
| 			displayMessage('Please fill all inputs');
 | |
| 		} else {
 | |
| 			switch ($action) {
 | |
| 				case 'give-points':
 | |
| 					admin_give_points($value);
 | |
| 					break;
 | |
| 				case 'give-coins':
 | |
| 					admin_give_coins($value);
 | |
| 					break;
 | |
| 				case 'give-premdays':
 | |
| 					admin_give_premdays($value);
 | |
| 					break;
 | |
| 				default:
 | |
| 					displayMessage('Action ' . $action . 'not found.');
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| else {
 | |
| 	$twig->display('admin.tools.account.html.twig', array(
 | |
| 		'hasCoinsColumn' => $hasCoinsColumn,
 | |
| 		'hasPointsColumn' => $hasPointsColumn,
 | |
| 		'freePremium' => $freePremium,
 | |
| 	));
 | |
| }
 | |
| 
 | |
| function displayMessage($message, $success = false) {
 | |
| 	global $twig, $hasCoinsColumn, $hasPointsColumn, $freePremium;
 | |
| 
 | |
| 	$success ? success($message): error($message);
 | |
| 
 | |
| 	$twig->display('admin.tools.account.html.twig', array(
 | |
| 		'hasCoinsColumn' => $hasCoinsColumn,
 | |
| 		'hasPointsColumn' => $hasPointsColumn,
 | |
| 		'freePremium' => $freePremium,
 | |
| 	));
 | |
| }
 | 
