<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/plugin-install.dtd"> <install version="1.5" type="plugin" group="content"> <name>Action bonus</name> <author>Kayfolom</author> <authorEmail>ekorepov@ukhta-inform.ru</authorEmail> <authorUrl>authorUrl</authorUrl> <creationDate>2009</creationDate> <copyright>c</copyright> <license>license</license> <version>1.0</version> <description>Начисление бонусов и компенсаций</description> <files> <filename plugin="action_bonus">action_bonus.php</filename> </files> <params /> </install>
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); @ini_set("display_errors", "1"); error_reporting(E_ALL); jimport( 'joomla.plugin.plugin' ); jimport( 'joomla.database.database' ); require_once("./urfa/URFAClient.php"); $mainframe->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 border="1" cellpadding="4" style="background-color:#8db3e2"><tbody>'; $table_action = $table_action.'</tr>'; $table_action = $table_action.'<tr><th align=center>Активированные бонусы</th><th align=center>Сумма</th><th align=center>Дата активации</th>'; while($mysql_res_table_action_row=mysql_fetch_array($mysql_res_table_action)) { $table_action = $table_action.'<tr style="background-color:#dbe5f1">'; $table_action = $table_action.'<td align=left>'.$mysql_res_table_action_row['name'].'</td>'; $table_action = $table_action.'<td align=left>'.sprintf ("%01.2f руб.",$mysql_res_table_action_row['summa']).'</td>'; // $table_action = $table_action.'<td align=left>'.date("d.m.Y H:i",$mysql_res_table_action_row['date_apply']).'</td>'; $table_action = $table_action.'<td align=left>'.$mysql_res_table_action_row['date_apply'].'</td>'; $table_action = $table_action.'</tr>'; } $table_action = $table_action.'</tbody></table>'; //***************** Таблица активированных бонусов конец //******************************* Форма начало $form_title = '<FORM METHOD="POST">'; 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>'; $form_action = ''; foreach($array_res_action as $str_res_action) { $form_body = ''; $form_body = $form_body."<h3>".$str_res_action['name']."</h3>"."<BR>"; $form_body = $form_body.$str_res_action['description']."<BR>"; $form_body = $form_body.'<input name="action_id" type="hidden" value="'.$str_res_action['id'].'">'; $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)."<BR>"; $form_body = $form_body.'<input name="action_accept" type="checkbox" value="accepted">Я понимаю и принимаю условия участия в акции</input>'; $form_body = $form_body.'<BR> <BR> <input type="submit" value="Выполнить">'; $form_action = $form_action.$form_title.$form_body.$form_footer.'<BR><hr size="2" align="left" width="100%">'; } //******************************* Форма конец $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 = "В данный момент у вас нет доступных для активации бонусов и компенсаций.<BR><BR>"; $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;
{Plugin_Action}
{Form_Action}
{Table_Action}
В данный момент у вас нет доступных для активации бонусов и компенсаций.
Активированные бонусы | Сумма | Дата активации |
---|---|---|
Подарок на Новый год и Рождество 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 |
Проведенные платежи по бонусам и компенсациям также доступны в Отчете по платежам.