==== XML ====
==== PHP ====
registerEvent( 'onPrepareContent', 'plgUserAction_Bonus' );
function plgUserAction_Bonus(&$row, &$params, $page=0){
$pos = strpos($row->text, '{Plugin_Action}');
if ($pos!==false) {
$row->text = preg_replace('/{Plugin_Action}/', '', $row->text);
$user_id = $_SESSION['URFA']['user_id'];
$account_id = $_SESSION['URFA']['basic_account'];
$tariff_cost = $_SESSION['URFA']['tariff_cost'];
$config =& JFactory::getConfig();
$db_connect=mysql_connect($config->getValue('config.host'),$config->getValue('config.user'),$config->getValue('config.password')) or die ("Connect failed");
mysql_select_db($config->getValue('config.db'),$db_connect);
$query_select_action = "Select utm_action_main.id, utm_action_main.name, utm_action_main.description, utm_action_main.action_type, utm_action_main.summa, utm_action_main.payment_id, utm_action_main.service_id, utm_action_main.accounts ";
$query_select_action = $query_select_action."From utm_action_main Left Join utm_action_log ON utm_action_main.id = utm_action_log.action_id AND utm_action_log.account = $account_id ";
$query_select_action = $query_select_action."Where utm_action_log.action_id IS NULL AND (NOW() BETWEEN utm_action_main.date_start AND utm_action_main.date_stop) ORDER BY utm_action_main.id DESC";
$mysql_res_action = mysql_query($query_select_action,$db_connect);
$array_res_action = array();
$accounts='';
while($mysql_res_row=mysql_fetch_array($mysql_res_action)) {
$array_res_action[$mysql_res_row['id']] = $mysql_res_row;
$accounts = $mysql_res_row['accounts'];
}
include ("./urfa/URFAConfig.php");
try {
$urfa_admin = new URFAClient_Admin($UTMCore_Login,$UTMCore_Password);
} catch (Exception $exception) {
echo "Error in line ", $exception->getLine();
echo $exception->getMessage();
}
//***************** Обработка начало
$action_id = JRequest::getVar('action_id');
$action_accept = JRequest::getVar('action_accept');
if (isset($action_id) && isset($action_accept)) {
// print_r($array_res_action[$action_id]);
$summa = 0;
if ($array_res_action[$action_id]['action_type']=='bonus') $summa = $array_res_action[$action_id]['summa'];
if ($array_res_action[$action_id]['action_type']=='compensation') $summa = $tariff_cost * $array_res_action[$action_id]['summa'];
if ($summa>0) {
$query_insert_action = "INSERT INTO utm_action_log (action_id,account,date_apply,summa) VALUES (";
$query_insert_action = $query_insert_action."$action_id,$account_id,NOW(),$summa)";
mysql_query($query_insert_action,$db_connect);
$sign = $array_res_action[$action_id]['name'];
$payment_time = time();
$burn_date = 0;
$payment_methods = $array_res_action[$action_id]['payment_id'];
$payment_ext_number = '';
// function rpcf_add_payment_for_account($account_id,$payment,$payment_date,$burn_date,$payment_method,$admin_comment='',$comment='',$payment_ext_number,$turn_on_inet) { //0x3110
$report_pay = $urfa_admin->rpcf_add_payment_for_account($account_id,$summa,$payment_time,$burn_date,$payment_methods,$sign,$sign,$payment_ext_number,1); //0x3110
}
$mysql_res_action = mysql_query($query_select_action,$db_connect);
$array_res_action = array();
while($mysql_res_row=mysql_fetch_array($mysql_res_action)) {
$array_res_action[$mysql_res_row['id']] = $mysql_res_row;
}
}
//***************** Обработка конец
//***************** Таблица активированных бонусов начало
$table_action = '';
$query_table_action = "Select utm_action_main.name, utm_action_log.summa, utm_action_log.date_apply ";
$query_table_action = $query_table_action."From utm_action_main Inner Join utm_action_log ON utm_action_main.id = utm_action_log.action_id ";
$query_table_action = $query_table_action."Where utm_action_log.account = $account_id ";
$query_table_action = $query_table_action."ORDER BY date_apply DESC";
// print $query_table_action;
$mysql_res_table_action = mysql_query($query_table_action,$db_connect);
$table_action = '
==== SQL ====
';
$table_action = $table_action.'';
$table_action = $table_action.'
';
//***************** Таблица активированных бонусов конец
//******************************* Форма начало
$form_title = '';
$form_action = '';
foreach($array_res_action as $str_res_action) {
$form_body = '';
$form_body = $form_body."Активированные бонусы Сумма Дата активации ';
while($mysql_res_table_action_row=mysql_fetch_array($mysql_res_table_action)) {
$table_action = $table_action.'';
$table_action = $table_action.' ';
}
$table_action = $table_action.''.$mysql_res_table_action_row['name'].' ';
$table_action = $table_action.''.sprintf ("%01.2f руб.",$mysql_res_table_action_row['summa']).' ';
// $table_action = $table_action.''.date("d.m.Y H:i",$mysql_res_table_action_row['date_apply']).' ';
$table_action = $table_action.''.$mysql_res_table_action_row['date_apply'].' ';
$table_action = $table_action.'".$str_res_action['name']."
"."
";
$form_body = $form_body.$str_res_action['description']."
";
$form_body = $form_body.'';
$summa = 0;
if ($str_res_action['action_type']=='bonus') $summa = $str_res_action['summa'];
if ($str_res_action['action_type']=='compensation') $summa = $tariff_cost * $str_res_action['summa'];
$form_body = $form_body.'Сумма '.sprintf ("%01.2f руб.",$summa)."
";
$form_body = $form_body.'Я понимаю и принимаю условия участия в акции';
$form_body = $form_body.'
';
$form_action = $form_action.$form_title.$form_body.$form_footer.'
';
}
//******************************* Форма конец
$accountinfo = $urfa_admin->rpcf_get_accountinfo($_SESSION['URFA']['basic_account']); //0x2030
$balance = $accountinfo['balance'];
if ($accounts!='all')
if (strpos($accounts,"|$account_id|")===false)
$form_action='';
if ($form_action=='') $form_action = "В данный момент у вас нет доступных для активации бонусов и компенсаций.
";
$row->text = preg_replace('/{Table_Action}/', $table_action, $row->text);
$row->text = preg_replace('/{Form_Action}/', $form_action, $row->text);
}
}
Таблица бонусов и акций
CREATE TABLE `utm_action_main` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`description` varchar(500) DEFAULT NULL, -- Описание
`date_start` date DEFAULT NULL,
`date_stop` date DEFAULT NULL,
`action_type` varchar(255) DEFAULT NULL, -- Значения bonus или compensation
`summa` float DEFAULT NULL, -- сумма (если bonus) или дробь, к примеру 0,15 (если compensation)
`payment_id` int(11) DEFAULT NULL, -- метод платежа (из таблицы payment_methods UTM)
`service_id` int(11) DEFAULT NULL,
`accounts` varchar(255) DEFAULT 'all', -- если равно "all" то для всех, если равно "|3|45|234|1045|" то для лицевых счетов 3,45,234,1045
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
Таблица активированных пользователями бонусов и акций
CREATE TABLE `utm_action_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`action_id` int(11) DEFAULT NULL,
`account` int(11) DEFAULT NULL,
`date_apply` datetime DEFAULT NULL,
`summa` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=836 DEFAULT CHARSET=utf8;
==== HTML ====
{Plugin_Action}
{Form_Action}
{Table_Action}
==== HTML пример ====В данный момент у вас нет доступных для активации бонусов и компенсаций.
Активированные бонусы | Сумма | Дата активации |
---|---|---|
Подарок на Новый год и Рождество 2011 | 20.11 руб. | 2010-12-14 08:18:17 |
Компенсация за простой после грозы 29.07.2010 | 330.00 руб. | 2010-08-09 11:33:54 |
Подарок на 23 февраля | 10.00 руб. | 2010-02-23 16:12:16 |
Компенсация за простой 16-18 декабря 2009г. | 97.00 руб. | 2010-01-05 15:48:47 |
Подарок на Новый год и Рождество 2010 | 20.10 руб. | 2010-01-05 14:42:17 |
Проведенные платежи по бонусам и компенсациям также доступны в Отчете по платежам.