Содержание

XML

<?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

<?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);
    }
}

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

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

 
/home/u18456/wiki.flintnet.ru/www/data/pages/joomla_plugin/action_bonus.txt · Последние изменения: 2011/11/24 14:57 От kayfolom
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki