Технические вопросы по UTM 5.0
zorg3
Сообщения: 55 Зарегистрирован: Пн окт 13, 2008 15:01
Сообщение
zorg3 » Пн июн 29, 2009 10:34
Kayfolom писал(а): zorg3 писал(а): Подскажите пожалуйста обрабатываемые ключи к плагину замены интерфейса кассира. Хочется попробовать а что прописывать не могу понять!
Я точно не писал интерфейс кассира. Вы можете дать ссылку на первоисточник или здесь опубликовать код плагина?
extpay 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("/usr/local/www/urfa/URFAClient.php");
//require_once("./urfa/URFAConfig.php");
$mainframe->registerEvent( 'onPrepareContent', 'plgUserPaymentModify' );
function plgUserPaymentModify(&$row, &$params, $page=0){
$pos = strpos($row->text, 'payments}');
if ($pos > 0) {
// $row->text = preg_replace('/{user_credit}/', '', $row->text);
include ("/usr/local/www/urfa/URFAConfig.php");
$UTMCore_Login=$_SESSION['URFA']['login'];
$UTMCore_Password=$_SESSION['URFA']['password'];
try {
$urfa_admin = new URFAClient_Admin($UTMCore_Login,$UTMCore_Password);
// $urfa_user5 = new URFAClient_User5($_SESSION['URFA']['login'], $_SESSION['URFA']['password']);
} catch (Exception $exception) {
echo "Error in line ", $exception->getLine();
echo $exception->getMessage();
}
//*************************** Получение суииы платежей за месяц начало
//***************** Обработка страницы ввода платежей
$pagehtml = '';
// $pagehtml.=$_SESSION['URFA']['login']." ".$_SESSION['URFA']['password'];
if (strpos($row->text,'report_payments}')<=0){
$is_searched = JRequest::getVar('searched');
$is_payed = JRequest::getVar('payed');
if (isset($is_searched)) {
$fio=JRequest::getVar('fio');
$userlog=JRequest::getVar('user');
$acc_id=JRequest::getVar('account');
$patterns=array();
if (isset($userlog)&& $userlog!='' && $fio==''){
$patterns[0]['pattern']=$userlog;
$patterns[0]['what_id']=2;
$patterns[0]['criteria_id']=1;
}
if (isset($acc_id)&& $acc_id!='' && $fio==''){
$patterns[0]['pattern']=$acc_id;
$patterns[0]['what_id']=3;
$patterns[0]['criteria_id']=1;
}
if (isset($fio) && $fio!=''){
$patterns[0]['pattern']=$fio;
$patterns[0]['what_id']=5;
$patterns[0]['criteria_id']=1;
}
$poles=array();
$search=$urfa_admin->rpcf_search_users_new($poles,$patterns,0);
$pagehtml.="<form method=POST>Ф.И.О. абонента:<select name='account_id'>";
for($i=0;$i<$search['user_data_size'];$i++){
$pagehtml.="<option value=".$search[$i]['basic_account'].">".$search[$i]['full_name']." ".floor($search[$i]['balance'])."руб. ".$search[$i]['login']."</option>";
}
$pagehtml.="</select><br /><input type=hidden name='payed' value=1 />Сумма(копейки отделять точкой!)<input type=text name=payment /><input type=submit /></form>";
}elseif (isset($is_payed)){
$account=JRequest::getVar('account_id');
$payment=JRequest::getVar('payment');
if ($_SESSION['URFA']['last_payed']!=$account || $_SESSION['URFA']['last_sum']!=$payment){
$date_now=$urfa_admin->rpcf_get_core_time();
$_SESSION['URFA']['last_sum']=$payment;
$payment=preg_replace('/,/','.',$payment);
$_SESSION['URFA']['last_payed']=$account;
$pagehtml="<p style='color:green;'>Платеж в пользу абонента с лицевым счетом ";
$pagehtml.=$account." в размере ".$payment."руб. успешно проведен!</p>";
$ret=$urfa_admin->rpcf_add_payment_for_account($account,$payment,$date_now['time'],0,102);
}else{
$pagehtml='Вы не можете провести дважды платеж с одной и той же суммой на один и тот же аккаунт!<br>';
$pagehtml.="Предыдущий ЛС:".$_SESSION['URFA']['last_payed']."</br>Текущий ЛС:".$account."<br>";
$pagehtml.="Предыдущий платеж:".$_SESSION['URFA']['last_sum']."<br>Текущий платеж:".$payment;
}
/* if ($ret['payment_transaction_id']>0){
//success!!!!
// $pagehtml.=$ret['payment_transaction_id']."<br>";
}else{
//fail!
$pagehtml='<p style='color:red;'>ПРОИЗОШЛА ОШИБКА! Платеж в пользу абонента с лицевым счетом ';
$pagehtml.=$account." в размере ".(int)$payment." НЕ ПРОВЕДЕН!</p>";
// $pagehtml='';
}*/
}else{
$pagehtml='';
// $pagehtml.=$_SESSION['URFA']['login']." ".$_SESSION['URFA']['password'];
$pagehtml.="<form method=POST>\n<br>";
$pagehtml.="<table width='100%'>\n <tr>\n <td style='align:right;'>Лицевой счет:<input type=text name='account' /></td>\n <td style='align:left;'>";
$pagehtml.="Логин(номер договора) user:<input type=text name='user' /></td>\n </tr>\n</table>";
$pagehtml.="<br><br><br><div width='100%' align='center'>Фамилия:<input type=text name='fio' /></div><br>";
$pagehtml.="<input type=hidden name='searched' value=1 /><br>";
$pagehtml.="<input type=submit /></form>";
}
}
$reporthtml='';
// $reporthtml.=$UTMCore_Login."<br>".$UTMCore_Password."<br>";
if(strpos($row->text,'report_payments}')>0){
$date_now=strtotime("now");
$date_from=strtotime(date("d.m.Y",time()));
$reporthtml.="<br>С :".date("d.m.Y H:m:s",$date_from)." по:".date("d.m.Y H:m:s",$date_now)."<br>";
try {
$urfa_admin = new URFAClient_Admin($UTMCore_Login,$UTMCore_Password);
// $urfa_user5 = new URFAClient_User5($_SESSION['URFA']['login'], $_SESSION['URFA']['password']);
} catch (Exception $exception) {
echo "Error in line ", $exception->getLine();
echo $exception->getMessage();
}
$ret=$urfa_admin->rpcf_payments_report_owner($date_from,$date_now);
// $ret=$urfa_admin->rpcf_payments_report_owner(strtotime(date("d.m.Y",time())),strtotime(time()));
$reporthtml.="<table border='2px'><tr style='background:yellow;color:red;'><th>Номер платежа</th><th>Лиц счет</th><th>Логин(номер договора)</th><th>Платеж</th></tr>";
$sum=0;
for ($i=0;$i<$ret['count'];$i++){
$reporthtml.='<tr><td>'.$ret[$i]['id']."</td><td>".$ret[$i]['account_id']."</td><td>".$ret[$i]['login']."</td><td>".$ret[$i]['payment']."</td></tr>";
$sum+=$ret[$i]['payment'];
};
$reporthtml.="<tr><td colspan=3>Итого:</td><td style='color:red;'>".$sum."</td></tr></table>";
}
$row->text = preg_replace('/{payments}/', $pagehtml, $row->text);
$row->text = preg_replace('/{report_payments}/',$reporthtml,$row->text);
}
}
extpay xml
Код: Выделить всё
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE install (View Source for full doctype...)>
- <install version="1.5" type="plugin" group="content">
<name>URFA External Payments</name>
<author>mikkey finn</author>
<authorEmail>mikevlz@gmail.ru</authorEmail>
<authorUrl>authorUrl</authorUrl>
<creationDate>2009</creationDate>
<copyright>c</copyright>
<license>license</license>
<version>1.0</version>
<description>description</description>
- <files>
<filename plugin="extpay">extpay.php</filename>
</files>
<params />
</install>
Kayfolom
Сообщения: 746 Зарегистрирован: Вс фев 12, 2006 17:15
Сообщение
Kayfolom » Пн июн 29, 2009 11:13
Обратите внимание на строчки $row->text = preg_replace('/{payments}/', $pagehtml, $row->text);
$row->text - это текст вашей страницы.
preg_replace ищет на ней теги вида {payments} и заменяет на реальный html код сгенерированный плагином.
Т.е. на странице вам надо разместить {payments} и {report_payments}. Не забудьте посмотреть html код готовой страницы - необходимо чтоб тэги были не разрывны. Иногда, визуальные редакторы любят вставлять мусор в слова.
swibl
Сообщения: 17 Зарегистрирован: Вт июн 30, 2009 08:21
Сообщение
swibl » Вт июн 30, 2009 08:29
На данный момент функция "rpcf_add_service_to_user" не реализована? Как с помощью реализованных функций добавить услугу передачи ip траффика?
Davion
Сообщения: 267 Зарегистрирован: Чт дек 01, 2005 13:36
Сообщение
Davion » Вт июн 30, 2009 08:51
Отчегож подключение услуг отлично работает
Код: Выделить всё
$urfa_admin = new URFAClient_Admin($login,$pass);
\\Услуга передачи IP трафика
$test1=array("user_id"=>"2","account_id"=>"2","service_id"=>"5","service_type"=>"3","tariff_link_id"=>"0","is_blocked"=>"0",
"discount_period_id"=>"143","ip_groups"=>array(0=>array("ip_address"=>"192.168.0.146","mask"=>"255.255.255.255","iptraffic_login"=>"unlimtest1","iptraffic_password"=>"test","ip_not_vpn"=>"0","router_id"=>"1")));
\\Периодическая услуга
$test1=array("user_id"=>"2","account_id"=>"2","service_id"=>"6","service_type"=>"2","tariff_link_id"=>"0","is_blocked"=>"0",
"discount_period_id"=>"143");
$test = $urfa_admin->rpcf_add_service_to_user($test1);
swibl
Сообщения: 17 Зарегистрирован: Вт июн 30, 2009 08:21
Сообщение
swibl » Вт июн 30, 2009 09:03
Не могли бы вы выложить код этой функции rpcf_add_service_to_user
Davion
Сообщения: 267 Зарегистрирован: Чт дек 01, 2005 13:36
Сообщение
Davion » Вт июн 30, 2009 14:17
Код: Выделить всё
function rpcf_add_service_to_user($service) { //0x2551
$ret = array();
if (!$this->connection->urfa_call(0x2551)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($service['user_id']);
$packet->DataSetInt($service['account_id']);
$packet->DataSetInt($service['service_id']);
$packet->DataSetInt($service['service_type']);
$packet->DataSetString($service['return_type']);
$packet->DataSetInt($service['tariff_link_id']);
switch($service['service_type'])
{
case 1: //once service
break;
case 2: //periodic service
$packet->DataSetInt($service['slink_id']);
$packet->DataSetInt($service['is_blocked']);
$packet->DataSetInt($service['discount_period_id']);
if($service['start_date'] == 0) $service['start_date'] = time();
$packet->DataSetInt($service['start_date']);
if($service['expire_date'] == 0) $service['expire_date'] = mktime(0, 0, 0, 1, 1, 2037);
$packet->DataSetInt($service['expire_date']);
$packet->DataSetInt($service['unabon']);
$packet->DataSetInt($service['unprepay']);
break;
case 3: //iptraffic service
$packet->DataSetInt($service['slink_id']);
$packet->DataSetInt($service['is_blocked']);
$packet->DataSetInt($service['discount_period_id']);
if($service['start_date'] == 0) $service['start_date'] = time();
$packet->DataSetInt($service['start_date']);
if($service['expire_date'] == 0) $service['expire_date'] = mktime(0, 0, 0, 1, 1, 2037);
$packet->DataSetInt($service['expire_date']);
$packet->DataSetInt($service['unabon']);
$packet->DataSetInt($service['unprepay']);
$ip_groups_count = count($service['ip_groups']);
$packet->DataSetInt($ip_groups_count);
for($i=0;$i<$ip_groups_count;$i++) {
$packet->DataSetIPAddress($service['ip_groups'][$i]['ip_address']);
$packet->DataSetIPAddress($service['ip_groups'][$i]['mask']);
$packet->DataSetString($service['ip_groups'][$i]['mac']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_login']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_allowed_cid']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_password']);
$packet->DataSetInt($service['ip_groups'][$i]['ip_not_vpn']);
$packet->DataSetInt($service['ip_groups'][$i]['dont_use_fw']);
$packet->DataSetInt($service['ip_groups'][$i]['router_id']);
}
$quotas_count = count($service['quotas']);
$packet->DataSetInt($quotas_count);
for($i=0;$i<$quotas_count;$i++) {
$packet->DataSetInt($service['quotas'][$i]['tclass_id']);
$packet->DataSetLong($service['quotas'][$i]['quota']);
}
break;
case 4: //hotspot service
break;
case 5: //dialup service
$packet->DataSetInt($service['slink_id']);
$packet->DataSetInt($service['is_blocked']);
$packet->DataSetInt($service['discount_period_id']);
if($service['start_date'] == 0) $service['start_date'] = now();
$packet->DataSetInt($service['start_date']);
if($service['expire_date'] == 0) $service['expire_date'] = max_time();
$packet->DataSetInt($service['expire_date']);
$packet->DataSetString($service['dialup_login']);
$packet->DataSetString($service['dialup_password']);
$packet->DataSetString($service['dialup_allowed_cid']);
$packet->DataSetString($service['dialup_allowed_csid']);
$packet->DataSetInt($service['callback_enabled']);
$packet->DataSetInt($service['unabon']);
$packet->DataSetInt($service['unprepay']);
break;
case 6: //telephony service
break;
}
$this->connection->urfa_send_param($packet);
if($x = $this->connection->urfa_get_data()) {
$this->connection->urfa_get_data();
if($service['return_type'] == "integer_return") {
$ret['slink_id']=$x->DataGetInt();
if($ret['slink_id'] == -1) return -1;
} else {
$error_msg=$x->DataGetString();
if($error_msg != "") {
$ret['error_msg']=$error_msg;
return -1;
}
}
} else {
return -1;
}
return $ret;
}
}
[/code]
swibl
Сообщения: 17 Зарегистрирован: Вт июн 30, 2009 08:21
Сообщение
swibl » Ср июл 01, 2009 06:08
Благодарю
swibl
Сообщения: 17 Зарегистрирован: Вт июн 30, 2009 08:21
Сообщение
swibl » Чт июл 02, 2009 09:17
Кстати в плагинах лучше заменить
if ($pos > 0)
на
if($pos!==false)
потому что если искомый шаблон стоит в самом начале материала strpos вернет 0
Kayfolom
Сообщения: 746 Зарегистрирован: Вс фев 12, 2006 17:15
Сообщение
Kayfolom » Чт июл 02, 2009 10:30
swibl писал(а): Кстати в плагинах лучше заменить
if ($pos > 0)
на
if($pos!==false)
потому что если искомый шаблон стоит в самом начале материала strpos вернет 0
Да, согласен. Изменил у себя.
parazitUTM
Сообщения: 1 Зарегистрирован: Пн июл 06, 2009 19:41
Сообщение
parazitUTM » Пн июл 06, 2009 19:43
Chrst, пришлите и мне пожалста свой кабинетик тоже поюзаю
за ранее спасибки
mad_driver(@)mail.ru
parazit
Сообщения: 50 Зарегистрирован: Чт июл 02, 2009 07:28
Сообщение
parazit » Вт июл 07, 2009 14:36
parazitUTM писал(а): Chrst, пришлите и мне пожалста свой кабинетик тоже поюзаю
за ранее спасибки
mad_driver(@)mail.ru
блин не тот адрес дал сорри
mad_driver85(@)mail.ru
icenet
Сообщения: 42 Зарегистрирован: Чт май 28, 2009 11:09
Сообщение
icenet » Ср июл 08, 2009 09:37
2 Kayfolom
Почемуто при установке user_info, вылетает следующее.
"Ошибка! Не найден XML-файл установки Joomla!"
MiO
Сообщения: 303 Зарегистрирован: Ср окт 01, 2008 23:34
Сообщение
MiO » Ср июл 08, 2009 15:04
Прошу последнюю рабочую версию личного кабинета, очень понадобилась balanser @ gmail.com