raf
Active Member
This is remake of [Znote AAC] Redeem a coupon system by @Cornex
Works with Gesior2012, style it however you want.
MySQL query:
Create 2 files inside of pages/ directory:
Open admincoupon.php and paste in there this code:
Save the file.
Open redeem.php and paste in there this code:
Save the file.
Open layouts/tibiarl/layout.php
And add your link as follows - this is link for admins to generate coupons.
Redeem for players.
Special thanks to @Cornex for help & support and of course for the original code
--TODO
Works with Gesior2012, style it however you want.
MySQL query:
PHP:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
CREATE TABLE IF NOT EXISTS `__cornex_redeem` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`points` int(11) NOT NULL,
`used_by` int(11) NOT NULL DEFAULT '0',
`time` int(11) NOT NULL,
`code` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Create 2 files inside of pages/ directory:
- admincoupon.php
- redeem.php
Open admincoupon.php and paste in there this code:
PHP:
<?php
if(!defined('INITIALIZED'))
exit;
if($group_id_of_acc_logged >= $config['site']['access_admin_panel']){
function serialKey()
{
$chars = array_merge(range(0, 9), range('A', 'Z'));
$serial = '';
$max = count($chars)-1;
for($i=0;$i<20;$i++){
$serial .= (!($i % 5) && $i ? '-' : '').$chars[rand(0, $max)];
}
return $serial;
}
if (isset($_POST['points'])) {
$error = false;
$points = $_POST['points'];
if (empty($points)) {
$error[] = "<font color='red'>Field cannot be empty</font>";
}
if (!is_numeric($points)) {
$error[] = "<font color='red'>Must be a number value</font>";
}
if (!empty($error)) {
foreach ($error as $err) {
$main_content .=''.$err.'<br>';
}
}
if (empty($error)) {
// Success
$key = serialKey();
$SQL->query('INSERT INTO `__cornex_redeem` (`code`, `points`, `used_by`, `time`, `ip`) VALUES ('.$SQL->quote($key).','.$points.', 0, 0, 0)');
echo '<p><b>Key generated</b><font color="red">: '.$key.'</font></p>';
}
}
$main_content .= '
<form class="ui form" action="" method="POST">
<div class="six wide field">
<label>Points</label>
<input type="text" name="points" placeholder="Amount of points for this code">
</div>
<input class="ui submit button" type="submit" value="Create code">
</form>';
} else {
$main_content .= '
<div class="ui warning message">
<div class="header">
You dont have permission to do that!
</div>
</div>
';
}
Open redeem.php and paste in there this code:
PHP:
<?php
if(!defined('INITIALIZED'))
exit;
if($logged){
if(isset($_POST['code'])) {
$code = $SQL->quote($_POST['code']);
$query = $SQL->query('SELECT * FROM `__cornex_redeem` WHERE `code` = '.$code.' LIMIT 1;');
// Key exist in database
if ($query->rowCount() >= 1) {
// $query = $query[0];
$result = $query->fetchAll(PDO::FETCH_ASSOC)[0];
if ($result['used_by'] > 0) {
$error[] = 'Key has already been used';
}
if (!empty($error)) {
foreach ($error as $err) {
echo $err.'<br>';
}
}
if (empty($error)) {
$time = time();
$code = $result['code'];
$points = $result['points'];
$querys = sprintf('UPDATE `__cornex_redeem` SET `time`='.time().', `used_by`='.$account_logged->getId().' WHERE `code`="'.$result['code'].'" ');
$SQL->query($querys);
$account_logged->setPremiumPoints($account_logged->getPremiumPoints() + $points);
$account_logged->save();
echo 'Amount of '.$points.' points has been added to your account!';
}
} else {
echo 'Key is not valid';
}
}
$accid = $account_logged->getID();
$main_content .= '
<form action="" method="POST">
<input type="text" name="code">
<input type="submit" value="Redeem">
</form>';
} else {
$main_content .= '
<div class="ui warning message">
<div class="header">
You dont have permission to do that!
</div>
</div>
';
}
Open layouts/tibiarl/layout.php
And add your link as follows - this is link for admins to generate coupons.
PHP:
<?PHP if($group_id_of_acc_logged >= $config['site']['access_admin_panel']){ ?>
<a href="?subtopic=admincoupon">
<div id="submenu_admincoupon" class="Submenuitem" onmouseover="MouseOverSubmenuItem(this)" onmouseout="MouseOutSubmenuItem(this)">
<div class="LeftChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
<div id="ActiveSubmenuItemIcon_admincoupon" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div>
<div id="ActiveSubmenuItemLabel_admincoupon" class="SubmenuitemLabel">Coupons</div>
<div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
</div>
</a>
<?php } ?>
Redeem for players.
PHP:
<a href="?subtopic=redeem">
<div id="submenu_redeem" class="Submenuitem" onmouseover="MouseOverSubmenuItem(this)" onmouseout="MouseOutSubmenuItem(this)">
<div class="LeftChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
<div id="ActiveSubmenuItemIcon_redeem" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div>
<div id="ActiveSubmenuItemLabel_redeem" class="SubmenuitemLabel">Redeem a coupon</div>
<div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
</div>
</a>
Special thanks to @Cornex for help & support and of course for the original code
--TODO
- Admin
- pagination
- showing coupons used
- showing coupons unused
- deleting coupons
- <give me your ideas>
- User
- <give me your ideas>
Last edited: