==== XML ==== Action bonus Kayfolom ekorepov@ukhta-inform.ru authorUrl 2009 c license 1.0 Начисление бонусов и компенсаций action_bonus.php ==== 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 = ''; $table_action = $table_action.''; $table_action = $table_action.''; 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.''; // $table_action = $table_action.''; $table_action = $table_action.''; $table_action = $table_action.''; } $table_action = $table_action.'
Активированные бонусыСуммаДата активации
'.$mysql_res_table_action_row['name'].''.sprintf ("%01.2f руб.",$mysql_res_table_action_row['summa']).''.date("d.m.Y H:i",$mysql_res_table_action_row['date_apply']).''.$mysql_res_table_action_row['date_apply'].'
'; //***************** Таблица активированных бонусов конец //******************************* Форма начало $form_title = '
'; if (isset($uri->_vars['action_id'])) { unset($uri->_vars['action_id']); } if (isset($uri->_vars['action_type'])) { unset($uri->_vars['action_type']); } if (isset($uri->_vars['action_accept'])) { unset($uri->_vars['action_accept']); } $form_footer = '
'; $form_action = ''; foreach($array_res_action as $str_res_action) { $form_body = ''; $form_body = $form_body."

".$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); } }
==== SQL ==== Таблица бонусов и акций 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 пример ====

В данный момент у вас нет доступных для активации бонусов и компенсаций.

Активированные бонусыСуммаДата активации
Подарок на Новый год и Рождество 201120.11 руб.2010-12-14 08:18:17
Компенсация за простой после грозы 29.07.2010330.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
Подарок на Новый год и Рождество 201020.10 руб.2010-01-05 14:42:17

Проведенные платежи по бонусам и компенсациям также доступны в Отчете по платежам.