View difference between Paste ID: BZu6PaPG and Fn12SvYs
SHOW: | | - or go back to the newest paste.
1-
<?php
1+
<?php
2-
//Параметры работы скрипта
2+
//Параметры работы скрипта
3-
$mysql_host = 'localhost';
3+
$mysql_host = 'localhost';
4-
$mysql_user = 'root';
4+
$mysql_user = 'root';
5-
$mysql_password = '1394pt';
5+
$mysql_password = '1394pt';
6-
$mysql_dbase = 'mikbill';
6+
$mysql_dbase = 'mikbill';
7-
$log_file = $_SERVER['DOCUMENT_ROOT'].'/script_log_1.log';
7+
$log_file = $_SERVER['DOCUMENT_ROOT'].'/script_log_1.log';
8-
//параметры исходящей почты
8+
//параметры исходящей почты
9-
$config['smtp_username'] = 'iptv@pautina-ltd.ru';
9+
$config['smtp_username'] = 'iptv@pautina-ltd.ru';
10-
$config['smtp_port']     = '465';
10+
$config['smtp_port']     = '465';
11-
$config['smtp_host']     = 'ssl://smtp.yandex.ru';
11+
$config['smtp_host']     = 'ssl://smtp.yandex.ru';
12-
$config['smtp_password'] = '123456789';
12+
$config['smtp_password'] = '123456789';
13-
$config['smtp_debug']   = false;
13+
$config['smtp_debug']   = false;
14-
$config['smtp_charset']  = 'UTF-8';
14+
$config['smtp_charset']  = 'UTF-8';
15-
$config['smtp_from']     = 'IPTVPORTAL SCRIPT';
15+
$config['smtp_from']     = 'IPTVPORTAL SCRIPT';
16-
//параметры отправляемого письма
16+
//параметры отправляемого письма
17-
$mail_to_admin = true;
17+
$mail_to_admin = true;
18-
$mail_to = 'iptv@pautina-ltd.ru';
18+
$mail_to = 'iptv@pautina-ltd.ru';
19-
$mail_subj = 'Отчёт о работе скрипта';
19+
$mail_subj = 'Отчёт о работе скрипта';
20-
$mail_headers = 'Content-type: text/html; charset="UTF-8"'."\r\n";
20+
$mail_headers = 'Content-type: text/html; charset="UTF-8"'."\r\n";
21-
$mail_headers .= 'From: '.$config['smtp_from'].' <'.$config['smtp_username'].'>'."\r\n";
21+
$mail_headers .= 'From: '.$config['smtp_from'].' <'.$config['smtp_username'].'>'."\r\n";
22-
//параметры iptvportal.ru
22+
//параметры iptvportal.ru
23-
$_auth_uri = 'http://91.236.103.198/api/jsonrpc/';
23+
$_auth_uri = 'http://91.236.103.198/api/jsonrpc/';
24-
$_username = 'CartMan';
24+
$_username = 'CartMan';
25-
$_password = '2119632654d';
25+
$_password = '2119632654d';
26-
$_jsonsql_uri = 'http://91.236.103.198/api/jsonsql/';
26+
$_jsonsql_uri = 'http://91.236.103.198/api/jsonsql/';
27-
$_iptvportal_header = null;
27+
$_iptvportal_header = null;
28-
//Системный профиль добавляемых пользователей
28+
//Системный профиль добавляемых пользователей
29-
$_system_profile = '63'; //pautina
29+
$_system_profile = '63'; //pautina
30-
//Группы синхронизируемых пользователей
30+
//Группы синхронизируемых пользователей
31-
$_users_groups = "1"; //(список групп - через запятую+пробел, ХЗ - сейчас стоит группа 8, но функционал оставляю на будущее...)
31+
$_users_groups = "1"; //(список групп - через запятую+пробел, ХЗ - сейчас стоит группа 8, но функционал оставляю на будущее...)
32-
$_include_groups = false; //(для субпровайдеров - true), когда true - включать только пользователей указанных групп, false - включать только пользователей ВНЕ указанных групп
32+
$_include_groups = false; //(для субпровайдеров - true), когда true - включать только пользователей указанных групп, false - включать только пользователей ВНЕ указанных групп
33-
//Тут приведу соответствие пакетов микбиловских и мидлваровских...
33+
//Тут приведу соответствие пакетов микбиловских и мидлваровских...
34-
$default_packets = array('1');      // Базовый
34+
$default_packets = array('1');      // Базовый
35-
$mikbill_packets[115] = array('1','2'); // 11|Пакет Видео по Запросу
35+
$mikbill_packets[115] = array('1','2'); // 11|Пакет Видео по Запросу
36-
$mikbill_packets[114] = array('1','1049'); // 10|Пакет Управление Просмотром
36+
$mikbill_packets[114] = array('1','1049'); // 10|Пакет Управление Просмотром
37-
$mikbill_packets[113] = array('1','506'); // 09|Пакет HD
37+
$mikbill_packets[113] = array('1','506'); // 09|Пакет HD
38-
$mikbill_packets[107] = array('1','495'); // 03|Пакет Спорт
38+
$mikbill_packets[107] = array('1','495'); // 03|Пакет Спорт
39-
$mikbill_packets[110] = array('1','503'); // 06|Пакет А-Медиа
39+
$mikbill_packets[110] = array('1','503'); // 06|Пакет А-Медиа
40-
$mikbill_packets[123] = array('1','504'); // 12|Пакет Виртуальный Кинозал
40+
$mikbill_packets[123] = array('1','504'); // 12|Пакет Виртуальный Кинозал
41-
$mikbill_packets[112] = array('1','502'); // 08|Пакет Взрослый
41+
$mikbill_packets[112] = array('1','502'); // 08|Пакет Взрослый
42-
$mikbill_packets[117] = array('1','501'); // 13|Пакет Все Включено
42+
$mikbill_packets[117] = array('1','501'); // 13|Пакет Все Включено
43-
$mikbill_packets[105] = array('1','496'); // 01|Пакет Детский
43+
$mikbill_packets[105] = array('1','496'); // 01|Пакет Детский
44-
$mikbill_packets[106] = array('1','500'); // 02|Пакет Кино
44+
$mikbill_packets[106] = array('1','500'); // 02|Пакет Кино
45-
$mikbill_packets[111] = array('1','499'); // 07|Пакет Наш Футбол
45+
$mikbill_packets[111] = array('1','499'); // 07|Пакет Наш Футбол
46-
$mikbill_packets[108] = array('1','498'); // 04|Пакет Познавательный
46+
$mikbill_packets[108] = array('1','498'); // 04|Пакет Познавательный
47-
$mikbill_packets[109] = array('1','497'); // 05|Пакет Развлекательный
47+
$mikbill_packets[109] = array('1','497'); // 05|Пакет Развлекательный
48-
$mikbill_packets[119] = array('1','505','496'); // Пакет Стандарт + Детский
48+
$mikbill_packets[119] = array('1','505','496'); // Пакет Стандарт + Детский
49-
$mikbill_packets[116] = array('1','505','495'); // Пакет Стандарт + Спорт
49+
$mikbill_packets[116] = array('1','505','495'); // Пакет Стандарт + Спорт
50-
$mikbill_packets[120] = array('1','505','500'); // Пакет Стандарт + Кино
50+
$mikbill_packets[120] = array('1','505','500'); // Пакет Стандарт + Кино
51-
$mikbill_packets[121] = array('1','505','498'); // Пакет Стандарт + Познавательный
51+
$mikbill_packets[121] = array('1','505','498'); // Пакет Стандарт + Познавательный
52-
$mikbill_packets[122] = array('1','505','497'); // Пакет Стандарт + Развлекательный
52+
$mikbill_packets[122] = array('1','505','497'); // Пакет Стандарт + Развлекательный
53-
$mikbill_packets[118] = array('1','501'); // 20|Пакет "Все Включено"
53+
$mikbill_packets[118] = array('1','501'); // 20|Пакет "Все Включено"
54-
//$mikbill_packets[124] = array('1','1387'); // 20|Пакет "Все Включено" - free
54+
//$mikbill_packets[124] = array('1','1387'); // 20|Пакет "Все Включено" - free
55-
//$mikbill_packets[125] = array('1','1387'); // 20|Пакет "Все Включено" - free   ПРОСТО ПЕРЕБИТ ID
55+
//$mikbill_packets[125] = array('1','1387'); // 20|Пакет "Все Включено" - free   ПРОСТО ПЕРЕБИТ ID
56-
//$mikbill_packets[126] = array('1','1387'); // 20|Пакет "Все Включено" - free   ПРОСТО ПЕРЕБИТ ID
56+
//$mikbill_packets[126] = array('1','1387'); // 20|Пакет "Все Включено" - free   ПРОСТО ПЕРЕБИТ ID
57-
//параметры работы скрипта закончены, дальше чисто код
57+
//параметры работы скрипта закончены, дальше чисто код
58-
header('Content-Type: text/html; charset=utf-8');
58+
header('Content-Type: text/html; charset=utf-8');
59-
setlocale(LC_ALL,'ru_RU.UTF-8');
59+
setlocale(LC_ALL,'ru_RU.UTF-8');
60-
setlocale(LC_NUMERIC,'en_US.UTF-8');
60+
setlocale(LC_NUMERIC,'en_US.UTF-8');
61-
date_default_timezone_set('Europe/Moscow');
61+
date_default_timezone_set('Europe/Moscow');
62-
//Для начала очищу файл логов
62+
//Для начала очищу файл логов
63-
if(!$handle = fopen($log_file, 'w')) {
63+
if(!$handle = fopen($log_file, 'w')) {
64-
	if($mail_to_admin){smtpmail($mail_to,$mail_subj,'FATAL ERROR: Не могу произвести запись логов',$mail_headers);}
64+
	if($mail_to_admin){smtpmail($mail_to,$mail_subj,'FATAL ERROR: Не могу произвести запись логов',$mail_headers);}
65-
	die('Не могу произвести запись логов');}
65+
	die('Не могу произвести запись логов');}
66-
ftruncate($handle,0);
66+
ftruncate($handle,0);
67-
fclose($handle);
67+
fclose($handle);
68-
ob_start();
68+
ob_start();
69-
//проверяю соединение с базой данных MySQL
69+
//проверяю соединение с базой данных MySQL
70-
$link=mysql_connect($mysql_host,$mysql_user,$mysql_password);
70+
$link=mysql_connect($mysql_host,$mysql_user,$mysql_password);
71-
if(!$link){
71+
if(!$link){
72-
	$message = 'Ошибка соединения: ' . mysql_error();
72+
	$message = 'Ошибка соединения: ' . mysql_error();
73-
    fatal_error($message);
73+
    fatal_error($message);
74-
}
74+
}
75-
log_save('1) Успешно соединился с сервером БД;',$log_file);
75+
log_save('1) Успешно соединился с сервером БД;',$log_file);
76-
//проверяю соединение с базой данных
76+
//проверяю соединение с базой данных
77-
$db_selected = mysql_select_db($mysql_dbase,$link);
77+
$db_selected = mysql_select_db($mysql_dbase,$link);
78-
if (!$db_selected) {
78+
if (!$db_selected) {
79-
    $message = 'Не удалось выбрать базу '.$mysql_dbase.' : '.mysql_error();
79+
    $message = 'Не удалось выбрать базу '.$mysql_dbase.' : '.mysql_error();
80-
    fatal_error($message);
80+
    fatal_error($message);
81-
}
81+
}
82-
log_save('2) Успешно выбрал базу данных;',$log_file);
82+
log_save('2) Успешно выбрал базу данных;',$log_file);
83-
//Вычисляю для начала список БАЗОВЫХ услуг
83+
//Вычисляю для начала список БАЗОВЫХ услуг
84-
$query = "SELECT serviceid FROM services WHERE service_activation=0 AND suspended=0";
84+
$query = "SELECT serviceid FROM services WHERE service_activation=0 AND suspended=0";
85-
trigger_error($query,E_USER_NOTICE);
85+
trigger_error($query,E_USER_NOTICE);
86-
mysql_query('SET NAMES utf8');
86+
mysql_query('SET NAMES utf8');
87-
$result = mysql_query($query);
87+
$result = mysql_query($query);
88-
while ($row = mysql_fetch_assoc($result)) {
88+
while ($row = mysql_fetch_assoc($result)) {
89-
    $BaseServices[] = $row['serviceid'];
89+
    $BaseServices[] = $row['serviceid'];
90-
}
90+
}
91-
//Затем выясняю, на каких тарифах доступны указанные базовые услуги
91+
//Затем выясняю, на каких тарифах доступны указанные базовые услуги
92-
for($i=0;$i<count($BaseServices);$i++){
92+
for($i=0;$i<count($BaseServices);$i++){
93-
	$query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$BaseServices[$i];
93+
	$query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$BaseServices[$i];
94-
	trigger_error($query,E_USER_NOTICE);
94+
	trigger_error($query,E_USER_NOTICE);
95-
	mysql_query('SET NAMES utf8');
95+
	mysql_query('SET NAMES utf8');
96-
	$result = mysql_query($query);
96+
	$result = mysql_query($query);
97-
	while ($row = mysql_fetch_assoc($result)) {
97+
	while ($row = mysql_fetch_assoc($result)) {
98-
 	   $BaseGids[] = $row['gid'];
98+
 	   $BaseGids[] = $row['gid'];
99-
 	   $GidServices[$row['gid']][] = $BaseServices[$i];
99+
 	   $GidServices[$row['gid']][] = $BaseServices[$i];
100-
	}
100+
	}
101-
}
101+
}
102-
//Список услуг доступных для подключения (НЕ БАЗОВЫХ)
102+
//Список услуг доступных для подключения (НЕ БАЗОВЫХ)
103-
$query = "SELECT serviceid FROM services WHERE service_activation=1 AND suspended=0";
103+
$query = "SELECT serviceid FROM services WHERE service_activation=1 AND suspended=0";
104-
trigger_error($query,E_USER_NOTICE);
104+
trigger_error($query,E_USER_NOTICE);
105-
mysql_query('SET NAMES utf8');
105+
mysql_query('SET NAMES utf8');
106-
$result = mysql_query($query);
106+
$result = mysql_query($query);
107-
while ($row = mysql_fetch_assoc($result)) {
107+
while ($row = mysql_fetch_assoc($result)) {
108-
    $AllServices[] = $row['serviceid'];
108+
    $AllServices[] = $row['serviceid'];
109-
}
109+
}
110-
//Затем выясняю, на каких тарифах доступны указанные услуги
110+
//Затем выясняю, на каких тарифах доступны указанные услуги
111-
for($i=0;$i<count($AllServices);$i++){
111+
for($i=0;$i<count($AllServices);$i++){
112-
	$query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$AllServices[$i];
112+
	$query = "SELECT gid FROM services_packets_pairs WHERE serviceid=".$AllServices[$i];
113-
	trigger_error($query,E_USER_NOTICE);
113+
	trigger_error($query,E_USER_NOTICE);
114-
	mysql_query('SET NAMES utf8');
114+
	mysql_query('SET NAMES utf8');
115-
	$result = mysql_query($query);
115+
	$result = mysql_query($query);
116-
  	while ($row = mysql_fetch_assoc($result)) {
116+
  	while ($row = mysql_fetch_assoc($result)) {
117-
 	   $AllGids[] = $row['gid'];
117+
 	   $AllGids[] = $row['gid'];
118-
 	   $AllGidServices[$row['gid']][] = $AllServices[$i];
118+
 	   $AllGidServices[$row['gid']][] = $AllServices[$i];
119-
	}
119+
	}
120-
}
120+
}
121-
//Первый запрос к БД, выборка пользователей
121+
//Первый запрос к БД, выборка пользователей
122-
$query = "SELECT uid, user, password, fio, address, prim, blocked, gid FROM users";
122+
$query = "SELECT uid, user, password, fio, address, prim, blocked, gid FROM users";
123-
//$query = "SELECT * FROM users";
123+
//$query = "SELECT * FROM users";
124-
trigger_error($query,E_USER_NOTICE);
124+
trigger_error($query,E_USER_NOTICE);
125-
mysql_query('SET NAMES utf8');
125+
mysql_query('SET NAMES utf8');
126-
$result = mysql_query($query);
126+
$result = mysql_query($query);
127-
if (!$result) {
127+
if (!$result) {
128-
    $message ='Неверный запрос: '.mysql_error()."\n";
128+
    $message ='Неверный запрос: '.mysql_error()."\n";
129-
    $message.='Запрос целиком: '.$query;
129+
    $message.='Запрос целиком: '.$query;
130-
    fatal_error($message);
130+
    fatal_error($message);
131-
}
131+
}
132-
log_save('3) Успешно запросил информацию о пользователях;',$log_file);
132+
log_save('3) Успешно запросил информацию о пользователях;',$log_file);
133-
if (!mysql_num_rows($result)) {
133+
if (!mysql_num_rows($result)) {
134-
    $message='Запрос к таблице пользователей вернул пустой результат.'."\n";
134+
    $message='Запрос к таблице пользователей вернул пустой результат.'."\n";
135-
    fatal_error($message);
135+
    fatal_error($message);
136-
}
136+
}
137-
$i=0;
137+
$i=0;
138-
while ($row = mysql_fetch_assoc($result)) {
138+
while ($row = mysql_fetch_assoc($result)) {
139-
	$mik_bill_users[$i]['uid']      = $row['uid'];
139+
	$mik_bill_users[$i]['uid']      = $row['uid'];
140-
    $mik_bill_users[$i]['user']     = $row['user'];
140+
    $mik_bill_users[$i]['user']     = $row['user'];
141-
    $mik_bill_users[$i]['password'] = $row['password'];
141+
    $mik_bill_users[$i]['password'] = $row['password'];
142-
    $mik_bill_users[$i]['fio']      = $row['fio'];
142+
    $mik_bill_users[$i]['fio']      = $row['fio'];
143-
    $mik_bill_users[$i]['address']  = $row['address'];
143+
    $mik_bill_users[$i]['address']  = $row['address'];
144-
    $mik_bill_users[$i]['prim']     = $row['prim'];
144+
    $mik_bill_users[$i]['prim']     = $row['prim'];
145-
    $mik_bill_users[$i]['blocked']  = $row['blocked'];
145+
    $mik_bill_users[$i]['blocked']  = $row['blocked'];
146-
    $mik_bill_users[$i]['gid']      = $row['gid'];
146+
    $mik_bill_users[$i]['gid']      = $row['gid'];
147-
    $i++;
147+
    $i++;
148-
}
148+
}
149-
//ВОТ ТУТ ПРОВЕРЯЮ ГРУППЫ ПОЛЬЗОВАТЕЛЕЙ
149+
//ВОТ ТУТ ПРОВЕРЯЮ ГРУППЫ ПОЛЬЗОВАТЕЛЕЙ
150-
$query = "SELECT uid FROM usersgroups_users WHERE usersgroupid IN(".$_users_groups.")";
150+
$query = "SELECT uid FROM usersgroups_users WHERE usersgroupid IN(".$_users_groups.")";
151-
mysql_query('SET NAMES utf8');
151+
mysql_query('SET NAMES utf8');
152-
trigger_error($query,E_USER_NOTICE);
152+
trigger_error($query,E_USER_NOTICE);
153-
$result = mysql_query($query);
153+
$result = mysql_query($query);
154-
if (!$result) {
154+
if (!$result) {
155-
    $message ='Неверный запрос: '.mysql_error()."\n";
155+
    $message ='Неверный запрос: '.mysql_error()."\n";
156-
    $message.='Запрос целиком: '.$query;
156+
    $message.='Запрос целиком: '.$query;
157-
    fatal_error($message);
157+
    fatal_error($message);
158-
}
158+
}
159-
log_save('4) Успешно запросил информацию о пользователях нужных групп;',$log_file);
159+
log_save('4) Успешно запросил информацию о пользователях нужных групп;',$log_file);
160-
if (!mysql_num_rows($result)) {
160+
if (!mysql_num_rows($result)) {
161-
    $message='Запрос к таблице групп пользователей вернул пустой результат.'."\n";
161+
    $message='Запрос к таблице групп пользователей вернул пустой результат.'."\n";
162-
    fatal_error($message);
162+
    fatal_error($message);
163-
}
163+
}
164-
$i=0;
164+
$i=0;
165-
while ($row = mysql_fetch_assoc($result)) {
165+
while ($row = mysql_fetch_assoc($result)) {
166-
    $group_users[$i]['uid'] = $row['uid'];
166+
    $group_users[$i]['uid'] = $row['uid'];
167-
    $i++;
167+
    $i++;
168-
}
168+
}
169-
$not_group_users_count = 0;
169+
$not_group_users_count = 0;
170-
$group_users_count = 0;
170+
$group_users_count = 0;
171-
for($j=0;$j<count($mik_bill_users);$j++){
171+
for($j=0;$j<count($mik_bill_users);$j++){
172-
	for($i=0;$i<count($group_users);$i++){
172+
	for($i=0;$i<count($group_users);$i++){
173-
		$user_found_in_group = false;
173+
		$user_found_in_group = false;
174-
		if($mik_bill_users[$j]['uid']==$group_users[$i]['uid']){
174+
		if($mik_bill_users[$j]['uid']==$group_users[$i]['uid']){
175-
			$user_found_in_group = true;
175+
			$user_found_in_group = true;
176-
			$mik_bill_group_users[$group_users_count]['uid']      = $mik_bill_users[$j]['uid'];
176+
			$mik_bill_group_users[$group_users_count]['uid']      = $mik_bill_users[$j]['uid'];
177-
			$mik_bill_group_users[$group_users_count]['user']     = $mik_bill_users[$j]['user'];
177+
			$mik_bill_group_users[$group_users_count]['user']     = $mik_bill_users[$j]['user'];
178-
   			$mik_bill_group_users[$group_users_count]['password'] = $mik_bill_users[$j]['password'];
178+
   			$mik_bill_group_users[$group_users_count]['password'] = $mik_bill_users[$j]['password'];
179-
   			$mik_bill_group_users[$group_users_count]['fio']      = $mik_bill_users[$j]['fio'];
179+
   			$mik_bill_group_users[$group_users_count]['fio']      = $mik_bill_users[$j]['fio'];
180-
   			$mik_bill_group_users[$group_users_count]['address']  = $mik_bill_users[$j]['address'];
180+
   			$mik_bill_group_users[$group_users_count]['address']  = $mik_bill_users[$j]['address'];
181-
   			$mik_bill_group_users[$group_users_count]['prim']     = $mik_bill_users[$j]['prim'];
181+
   			$mik_bill_group_users[$group_users_count]['prim']     = $mik_bill_users[$j]['prim'];
182-
   			$mik_bill_group_users[$group_users_count]['blocked']  = $mik_bill_users[$j]['blocked'];
182+
   			$mik_bill_group_users[$group_users_count]['blocked']  = $mik_bill_users[$j]['blocked'];
183-
   			$mik_bill_group_users[$group_users_count]['gid']      = $mik_bill_users[$j]['gid'];
183+
   			$mik_bill_group_users[$group_users_count]['gid']      = $mik_bill_users[$j]['gid'];
184-
   			$group_users_count++;
184+
   			$group_users_count++;
185-
		}
185+
		}
186-
	}
186+
	}
187-
	if(!$user_found_in_group){
187+
	if(!$user_found_in_group){
188-
			$mik_bill_not_group_users[$not_group_users_count]['uid']      = $mik_bill_users[$j]['uid'];
188+
			$mik_bill_not_group_users[$not_group_users_count]['uid']      = $mik_bill_users[$j]['uid'];
189-
			$mik_bill_not_group_users[$not_group_users_count]['user']     = $mik_bill_users[$j]['user'];
189+
			$mik_bill_not_group_users[$not_group_users_count]['user']     = $mik_bill_users[$j]['user'];
190-
   			$mik_bill_not_group_users[$not_group_users_count]['password'] = $mik_bill_users[$j]['password'];
190+
   			$mik_bill_not_group_users[$not_group_users_count]['password'] = $mik_bill_users[$j]['password'];
191-
   			$mik_bill_not_group_users[$not_group_users_count]['fio']      = $mik_bill_users[$j]['fio'];
191+
   			$mik_bill_not_group_users[$not_group_users_count]['fio']      = $mik_bill_users[$j]['fio'];
192-
   			$mik_bill_not_group_users[$not_group_users_count]['address']  = $mik_bill_users[$j]['address'];
192+
   			$mik_bill_not_group_users[$not_group_users_count]['address']  = $mik_bill_users[$j]['address'];
193-
   			$mik_bill_not_group_users[$not_group_users_count]['prim']     = $mik_bill_users[$j]['prim'];
193+
   			$mik_bill_not_group_users[$not_group_users_count]['prim']     = $mik_bill_users[$j]['prim'];
194-
   			$mik_bill_not_group_users[$not_group_users_count]['blocked']  = $mik_bill_users[$j]['blocked'];
194+
   			$mik_bill_not_group_users[$not_group_users_count]['blocked']  = $mik_bill_users[$j]['blocked'];
195-
   			$mik_bill_not_group_users[$not_group_users_count]['gid']      = $mik_bill_users[$j]['gid'];
195+
   			$mik_bill_not_group_users[$not_group_users_count]['gid']      = $mik_bill_users[$j]['gid'];
196-
   			$not_group_users_count++;
196+
   			$not_group_users_count++;
197-
		}
197+
		}
198-
}
198+
}
199-
if($_include_groups){//включать только пользователей указанных групп
199+
if($_include_groups){//включать только пользователей указанных групп
200-
	$mik_bill_users = $mik_bill_group_users;
200+
	$mik_bill_users = $mik_bill_group_users;
201-
}else{//включать только пользователей ВНЕ указанных групп
201+
}else{//включать только пользователей ВНЕ указанных групп
202-
	$mik_bill_users = $mik_bill_not_group_users;
202+
	$mik_bill_users = $mik_bill_not_group_users;
203-
}
203+
}
204-
//Тут добавлю пользователям базовые пакеты, прописанные в выбранном тарифе
204+
//Тут добавлю пользователям базовые пакеты, прописанные в выбранном тарифе
205-
for($j=0;$j<count($mik_bill_users);$j++){
205+
for($j=0;$j<count($mik_bill_users);$j++){
206-
	if (in_array($mik_bill_users[$j]['gid'], $BaseGids)) {
206+
	if (in_array($mik_bill_users[$j]['gid'], $BaseGids)) {
207-
		$mik_bill_users[$j]['services'] = $GidServices[$mik_bill_users[$j]['gid']];
207+
		$mik_bill_users[$j]['services'] = $GidServices[$mik_bill_users[$j]['gid']];
208-
	}
208+
	}
209-
}
209+
}
210-
//А вот тут - индивидуальные пакеты, вне выбранного тарифа...
210+
//А вот тут - индивидуальные пакеты, вне выбранного тарифа...
211-
$query = "SELECT * FROM services_users_pairs";
211+
$query = "SELECT * FROM services_users_pairs";
212-
mysql_query('SET NAMES utf8');
212+
mysql_query('SET NAMES utf8');
213-
trigger_error($query,E_USER_NOTICE);
213+
trigger_error($query,E_USER_NOTICE);
214-
$result = mysql_query($query);
214+
$result = mysql_query($query);
215-
if (!$result) {
215+
if (!$result) {
216-
    $message ='Неверный запрос: '.mysql_error()."\n";
216+
    $message ='Неверный запрос: '.mysql_error()."\n";
217-
    $message.='Запрос целиком: '.$query;
217+
    $message.='Запрос целиком: '.$query;
218-
    fatal_error($message);
218+
    fatal_error($message);
219-
}
219+
}
220-
log_save('5) Успешно запросил информацию о пакетах пользователей;',$log_file);
220+
log_save('5) Успешно запросил информацию о пакетах пользователей;',$log_file);
221-
$i=0;
221+
$i=0;
222-
while ($row = mysql_fetch_assoc($result)) {
222+
while ($row = mysql_fetch_assoc($result)) {
223-
    for($j=0;$j<count($mik_bill_users);$j++){
223+
    for($j=0;$j<count($mik_bill_users);$j++){
224-
 		if ($row['uid']==$mik_bill_users[$j]['uid']) {
224+
 		if ($row['uid']==$mik_bill_users[$j]['uid']) {
225-
 			if (!in_array($row['serviceid'], $BaseServices)) {	//проверка наличия выбранного сервиса в списке БАЗОВЫХ, если сервис базовый - он добавляется не здесь, а вместе с тарифом...
225+
 			if (!in_array($row['serviceid'], $BaseServices)) {	//проверка наличия выбранного сервиса в списке БАЗОВЫХ, если сервис базовый - он добавляется не здесь, а вместе с тарифом...
226-
 				if (in_array($row['serviceid'], $AllGidServices[$mik_bill_users[$j]['gid']])) {	//проверка наличия выбранного сервиса в списке доступных, если услуга доступна на этом тарифе - тогда тогда добавление проходит...
226+
 				if (in_array($row['serviceid'], $AllGidServices[$mik_bill_users[$j]['gid']])) {	//проверка наличия выбранного сервиса в списке доступных, если услуга доступна на этом тарифе - тогда тогда добавление проходит...
227-
        			$mik_bill_users[$j]['services'][] = $row['serviceid'];
227+
        			$mik_bill_users[$j]['services'][] = $row['serviceid'];
228-
        		}
228+
        		}
229-
        	}
229+
        	}
230-
 		}
230+
 		}
231-
  	}
231+
  	}
232-
    $i++;
232+
    $i++;
233-
}
233+
}
234-
//Авторизуюсь на сервере MiddleWare
234+
//Авторизуюсь на сервере MiddleWare
235-
$user = authorize_user ($auth_uri=$_auth_uri, $username=$_username, $password=$_password);
235+
$user = authorize_user ($auth_uri=$_auth_uri, $username=$_username, $password=$_password);
236-
if(empty($user[session_id])){
236+
if(empty($user[session_id])){
237-
    $message='Авторизация на сервере MiddleWare не прошла.'."\n";
237+
    $message='Авторизация на сервере MiddleWare не прошла.'."\n";
238-
    fatal_error($message);
238+
    fatal_error($message);
239-
}
239+
}
240-
log_save('6) Успешно авторизовался на сервере MiddleWare;',$log_file);
240+
log_save('6) Успешно авторизовался на сервере MiddleWare;',$log_file);
241-
# выборка списка абонентов
241+
# выборка списка абонентов
242-
$res = jsonsql_call ("select", array (
242+
$res = jsonsql_call ("select", array (
243-
    "data" => array ("username", "comment"),
243+
    "data" => array ("username", "comment"),
244-
    "from" => "subscriber",
244+
    "from" => "subscriber",
245-
    "where" => array ("eq" => array ("sprofile_id", $_system_profile))
245+
    "where" => array ("eq" => array ("sprofile_id", $_system_profile))
246-
));
246+
));
247-
//убираю из списка синхронизируемых пользователей юзеров с коментарием VIP
247+
248-
foreach($res as $current_user)
248+
//убираю из списка синхронизируемых пользователей юзеров с коментарием VIP
249-
{
249+
$middleware_users=array();
250-
   if($current_user[1]<>"VIP"){$middleware_users[]['user'] = $current_user[0];}
250+
foreach($res as $current_user)
251-
}
251+
{
252-
//итак имеем две таблицы пользователей, сформирую массивы элементов, которые нужно добавить в MiddleWare, удалить из MiddleWare, а так же массив общих элементов
252+
   if($current_user[1] != "VIP") {
253-
$del_from_middleware_elements=array();
253+
		$middleware_users[] = array("user" => $current_user[0]);
254-
for($i=0;$i<count($mik_bill_users);$i++){
254+
   }
255-
	$element_present = false;
255+
}
256-
	for($j=0;$j<count($middleware_users);$j++){
256+
257-
		if($mik_bill_users[$i]['user']==$middleware_users[$j]['user']){
257+
//итак имеем две таблицы пользователей, сформирую массивы элементов, которые нужно добавить в MiddleWare, удалить из MiddleWare, а так же массив общих элементов
258-
			$element_present = true;
258+
$del_from_middleware_elements=array();
259-
			$common_elements[] = $mik_bill_users[$i];
259+
for($i=0;$i<count($mik_bill_users);$i++){
260-
		}
260+
	$element_present = false;
261-
	}
261+
	for($j=0;$j<count($middleware_users);$j++){
262-
	if(!$element_present){
262+
		if($mik_bill_users[$i]['user']==$middleware_users[$j]['user']){
263-
		$add_to_middleware_elements[] = $mik_bill_users[$i];
263+
			$element_present = true;
264-
	}
264+
			$common_elements[] = $mik_bill_users[$i];
265-
}
265+
		}
266-
for($i=0;$i<count($middleware_users);$i++){
266+
	}
267-
	$element_present = false;
267+
	if(!$element_present){
268-
	for($j=0;$j<count($mik_bill_users);$j++){
268+
		$add_to_middleware_elements[] = $mik_bill_users[$i];
269-
		if($mik_bill_users[$j]['user']==$middleware_users[$i]['user']){
269+
	}
270-
			$element_present = true;
270+
}
271-
		}
271+
for($i=0;$i<count($middleware_users);$i++){
272-
	}
272+
	$element_present = false;
273-
	if(!$element_present){
273+
	for($j=0;$j<count($mik_bill_users);$j++){
274-
		$del_from_middleware_elements[] = $middleware_users[$i]['user'];
274+
		if($mik_bill_users[$j]['user']==$middleware_users[$i]['user']){
275-
	}
275+
			$element_present = true;
276-
}
276+
		}
277-
//итак добавляю пользователей
277+
	}
278-
if(count($add_to_middleware_elements)>0){log_save('	Добавил пользователей:',$log_file);}
278+
	if(!$element_present){
279-
for($i=0;$i<count($add_to_middleware_elements);$i++){
279+
		$del_from_middleware_elements[] = $middleware_users[$i]['user'];
280-
	$fio = explode(" ",$add_to_middleware_elements[$i]['fio']);
280+
	}
281-
	$res = jsonsql_call ("insert", array (
281+
}
282-
    	"into" => "subscriber",
282+
//итак добавляю пользователей
283-
    	"columns" => array ("username","password","surname","comment","email","address","phone","first_name","middle_name","max_terminal","sprofile_id"),
283+
if(count($add_to_middleware_elements)>0){log_save('	Добавил пользователей:',$log_file);}
284-
    	"values" => array (
284+
for($i=0;$i<count($add_to_middleware_elements);$i++){
285-
        "username" => $add_to_middleware_elements[$i]['user'],
285+
	$fio = explode(" ",$add_to_middleware_elements[$i]['fio']);
286-
        "password" => $add_to_middleware_elements[$i]['password'],
286+
	$res = jsonsql_call ("insert", array (
287-
        "surname" => $fio[0],
287+
    	"into" => "subscriber",
288-
        "comment" => $add_to_middleware_elements[$i]['prim'],
288+
    	"columns" => array ("username","password","surname","comment","email","address","phone","first_name","middle_name","max_terminal","sprofile_id"),
289-
        "email" => "",
289+
    	"values" => array (
290-
        "address" => $add_to_middleware_elements[$i]['address'],
290+
        "username" => $add_to_middleware_elements[$i]['user'],
291-
        "phone" => "",
291+
        "password" => $add_to_middleware_elements[$i]['password'],
292-
        "first_name" => $fio[1],
292+
        "surname" => $fio[0],
293-
        "middle_name" => $fio[2],
293+
        "comment" => $add_to_middleware_elements[$i]['prim'],
294-
        "max_terminal" => "3",
294+
        "email" => "",
295-
        "sprofile_id" => $_system_profile,
295+
        "address" => $add_to_middleware_elements[$i]['address'],
296-
    	),
296+
        "phone" => "",
297-
    "returning" => "id"
297+
        "first_name" => $fio[1],
298-
	));
298+
        "middle_name" => $fio[2],
299-
	log_save('		'.$add_to_middleware_elements[$i]['user'].' '.$add_to_middleware_elements[$i]['fio'],$log_file);
299+
        "max_terminal" => "3",
300-
	$res = jsonsql_call ("insert", array (
300+
        "sprofile_id" => $_system_profile,
301-
    	"into" => "subscriber_package",
301+
    	),
302-
    	"columns" => array ("subscriber_id", "package_id", "enabled"),
302+
    "returning" => "id"
303-
    	"select" => array (
303+
	));
304-
        	"data" => array (array ("s" => "id"), array ("p" => "id"), true),
304+
	log_save('		'.$add_to_middleware_elements[$i]['user'].' '.$add_to_middleware_elements[$i]['fio'],$log_file);
305-
        "from" => array (array (
305+
	$res = jsonsql_call ("insert", array (
306-
            "table" => "subscriber", "as" => "s"
306+
    	"into" => "subscriber_package",
307-
        ), array (
307+
    	"columns" => array ("subscriber_id", "package_id", "enabled"),
308-
            "table" => "package", "as" => "p"
308+
    	"select" => array (
309-
        )),
309+
        	"data" => array (array ("s" => "id"), array ("p" => "id"), true),
310-
        "where" => array (
310+
        "from" => array (array (
311-
            "and" => array (array (
311+
            "table" => "subscriber", "as" => "s"
312-
                "eq" => array (array ("s" => "username"), $add_to_middleware_elements[$i]['user'])
312+
        ), array (
313-
            ), array (
313+
            "table" => "package", "as" => "p"
314-
                "in" => array (array ("p" => "name"), "Базовый", "Стандарт")
314+
        )),
315-
            ))
315+
        "where" => array (
316-
        )
316+
            "and" => array (array (
317-
    ),
317+
                "eq" => array (array ("s" => "username"), $add_to_middleware_elements[$i]['user'])
318-
    "returning" => "package_id"
318+
            ), array (
319-
	));
319+
                "in" => array (array ("p" => "name"), "Базовый", "Стандарт")
320-
	log_save('			Добавил пакеты "Базовый" и "Стандарт" пользователю ',$log_file);
320+
            ))
321-
}
321+
        )
322-
//вот тут удаляю терминалы удаляемых пользователей
322+
    ),
323-
if(count($del_from_middleware_elements)>0){log_save('	Удалил терминалы пользователей:',$log_file);}
323+
    "returning" => "package_id"
324-
for($i=0;$i<count($del_from_middleware_elements);$i++){
324+
	));
325-
$res = jsonsql_call ("delete", array (
325+
	log_save('			Добавил пакеты "Базовый" и "Стандарт" пользователю ',$log_file);
326-
    "from" => "terminal",
326+
}
327-
    "where" => array ("in" => array ("subscriber_id", array (
327+
//вот тут удаляю терминалы удаляемых пользователей
328-
        "select" => array (
328+
if(count($del_from_middleware_elements)>0){log_save('	Удалил терминалы пользователей:',$log_file);}
329-
            "data" => "id",
329+
for($i=0;$i<count($del_from_middleware_elements);$i++){
330-
            "from" => "subscriber",
330+
$res = jsonsql_call ("delete", array (
331-
            "where" => array ("eq" => array ("username", $del_from_middleware_elements[$i]))
331+
    "from" => "terminal",
332-
        )
332+
    "where" => array ("in" => array ("subscriber_id", array (
333-
    ))),
333+
        "select" => array (
334-
    "returning" => "id"
334+
            "data" => "id",
335-
));
335+
            "from" => "subscriber",
336-
	log_save('		'.$del_from_middleware_elements[$i],$log_file);
336+
            "where" => array ("eq" => array ("username", $del_from_middleware_elements[$i]))
337-
}
337+
        )
338-
//а тут удаляю неугодных пользователей
338+
    ))),
339-
if(count($del_from_middleware_elements)>0){log_save('	Удалил пользователей:',$log_file);}
339+
    "returning" => "id"
340-
for($i=0;$i<count($del_from_middleware_elements);$i++){
340+
));
341-
	$res = jsonsql_call ("delete", array (
341+
	log_save('		'.$del_from_middleware_elements[$i],$log_file);
342-
    	"from" => "subscriber",
342+
}
343-
    	"where" => array ("eq" => array ("username", $del_from_middleware_elements[$i])),
343+
//а тут удаляю неугодных пользователей
344-
    	"returning" => "id"
344+
if(count($del_from_middleware_elements)>0){log_save('	Удалил пользователей:',$log_file);}
345-
	));
345+
for($i=0;$i<count($del_from_middleware_elements);$i++){
346-
	log_save('		'.$del_from_middleware_elements[$i],$log_file);
346+
	$res = jsonsql_call ("delete", array (
347-
}
347+
    	"from" => "subscriber",
348-
//обновляю инфу существующих пользователей
348+
    	"where" => array ("eq" => array ("username", $del_from_middleware_elements[$i])),
349-
if(count($common_elements)>0){log_save('	Обновил пользователей:'."\n",$log_file);}
349+
    	"returning" => "id"
350-
for($i=0;$i<count($common_elements);$i++){
350+
	));
351-
	$fio = explode(" ",$common_elements[$i]['fio']);
351+
	log_save('		'.$del_from_middleware_elements[$i],$log_file);
352-
	$res = jsonsql_call ("update", array (
352+
}
353-
    	"table" => "subscriber",
353+
//обновляю инфу существующих пользователей
354-
    	"set" => array (
354+
if(count($common_elements)>0){log_save('	Обновил пользователей:'."\n",$log_file);}
355-
    		"disabled" => false,
355+
for($i=0;$i<count($common_elements);$i++){
356-
    		"password" => $common_elements[$i]['password'],
356+
	$fio = explode(" ",$common_elements[$i]['fio']);
357-
    		"surname" => $fio[0],
357+
	$res = jsonsql_call ("update", array (
358-
    		"comment" => $common_elements[$i]['prim'],
358+
    	"table" => "subscriber",
359-
    		"email" => "",
359+
    	"set" => array (
360-
    		"address" => $common_elements[$i]['address'],
360+
    		"disabled" => false,
361-
    		"phone"  => "",
361+
    		"password" => $common_elements[$i]['password'],
362-
    		"first_name" => $fio[1],
362+
    		"surname" => $fio[0],
363-
    		"middle_name" => $fio[2],
363+
    		"comment" => $common_elements[$i]['prim'],
364-
    		"max_terminal" => "3",
364+
    		"email" => "",
365-
    		"sprofile_id" => $_system_profile,
365+
    		"address" => $common_elements[$i]['address'],
366-
    		),
366+
    		"phone"  => "",
367-
    	"where" => array ("eq" => array ("username", $common_elements[$i]['user'])),
367+
    		"first_name" => $fio[1],
368-
    	"returning" => "id"
368+
    		"middle_name" => $fio[2],
369-
	));
369+
    		"max_terminal" => "3",
370-
	log_save('		'.$common_elements[$i]['user'].' '.$common_elements[$i]['fio']."\n",$log_file);
370+
    		"sprofile_id" => $_system_profile,
371-
}
371+
    		),
372-
//Тут отключу заблокированных пользователей
372+
    	"where" => array ("eq" => array ("username", $common_elements[$i]['user'])),
373-
for($i=0;$i<count($mik_bill_users);$i++){
373+
    	"returning" => "id"
374-
	if($mik_bill_users[$i]['blocked']==='1'){
374+
	));
375-
		$res = jsonsql_call ("update", array (
375+
	log_save('		'.$common_elements[$i]['user'].' '.$common_elements[$i]['fio']."\n",$log_file);
376-
    		"table" => "subscriber",
376+
}
377-
    		"set" => array ("disabled" => true),
377+
//Тут отключу заблокированных пользователей
378-
   		 	"where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
378+
for($i=0;$i<count($mik_bill_users);$i++){
379-
   		 	"returning" => "id"
379+
	if($mik_bill_users[$i]['blocked']==='1'){
380-
		));
380+
		$res = jsonsql_call ("update", array (
381-
//		log_save('		Отключил пользователя '.$mik_bill_users[$i]['user'],$log_file);
381+
    		"table" => "subscriber",
382-
    }else{
382+
    		"set" => array ("disabled" => true),
383-
 		$res = jsonsql_call ("update", array (
383+
   		 	"where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
384-
    		"table" => "subscriber",
384+
   		 	"returning" => "id"
385-
    		"set" => array ("disabled" => false),
385+
		));
386-
   		 	"where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
386+
//		log_save('		Отключил пользователя '.$mik_bill_users[$i]['user'],$log_file);
387-
   		 	"returning" => "id"
387+
    }else{
388-
		));
388+
 		$res = jsonsql_call ("update", array (
389-
//		log_save('		Включил пользователя '.$mik_bill_users[$i]['user'],$log_file);
389+
    		"table" => "subscriber",
390-
     }
390+
    		"set" => array ("disabled" => false),
391-
}
391+
   		 	"where" => array ("eq" => array ("username", $mik_bill_users[$i]['user'])),
392-
 //Выясню текущие подключеные пакеты в мидлвари...
392+
   		 	"returning" => "id"
393-
 for($i=0;$i<count($mik_bill_users);$i++){
393+
		));
394-
	$subscriber_packages = jsonsql_call ("select", array (
394+
//		log_save('		Включил пользователя '.$mik_bill_users[$i]['user'],$log_file);
395-
 	"data" => array ("p" => "id"),
395+
     }
396-
    "from" => array (
396+
}
397-
        array ("table" => "package", "as" => "p"),
397+
 //Выясню текущие подключеные пакеты в мидлвари...
398-
        array ("join" => "subscriber_package", "join_type" => "inner", "as" => "s2p",
398+
 for($i=0;$i<count($mik_bill_users);$i++){
399-
               "on" => array ("eq" => array (array ("s2p" => "package_id"), array ("p" => "id")))
399+
	$subscriber_packages = jsonsql_call ("select", array (
400-
        ),
400+
 	"data" => array ("p" => "id"),
401-
        array ("join" => "subscriber", "join_type" => "inner", "as" => "s",
401+
    "from" => array (
402-
               "on" => array ("eq" => array (array ("s2p" => "subscriber_id"), array ("s" => "id")))
402+
        array ("table" => "package", "as" => "p"),
403-
        )
403+
        array ("join" => "subscriber_package", "join_type" => "inner", "as" => "s2p",
404-
    ),
404+
               "on" => array ("eq" => array (array ("s2p" => "package_id"), array ("p" => "id")))
405-
    "where" => array ("eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])),
405+
        ),
406-
    "order_by" => array ("p" => "name")
406+
        array ("join" => "subscriber", "join_type" => "inner", "as" => "s",
407-
	));
407+
               "on" => array ("eq" => array (array ("s2p" => "subscriber_id"), array ("s" => "id")))
408-
 	$middleware_packets[$mik_bill_users[$i]['user']] = $subscriber_packages;
408+
        )
409-
 	//Ну и заодно в этом цикле расчитаю массив билинговский...
409+
    ),
410-
 	if(empty($mik_bill_users[$i]['services'])){
410+
    "where" => array ("eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])),
411-
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = $default_packets;
411+
    "order_by" => array ("p" => "name")
412-
	}else{
412+
	));
413-
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = array();
413+
 	$middleware_packets[$mik_bill_users[$i]['user']] = $subscriber_packages;
414-
		foreach ($mik_bill_users[$i]['services'] as $v) {
414+
 	//Ну и заодно в этом цикле расчитаю массив билинговский...
415-
    		 $mikbill_user_packets[$mik_bill_users[$i]['user']] = array_merge($mikbill_user_packets[$mik_bill_users[$i]['user']], $mikbill_packets[$v]);
415+
 	if(empty($mik_bill_users[$i]['services'])){
416-
		}
416+
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = $default_packets;
417-
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = array_unique($mikbill_user_packets[$mik_bill_users[$i]['user']]);
417+
	}else{
418-
    }
418+
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = array();
419-
   }
419+
		foreach ($mik_bill_users[$i]['services'] as $v) {
420-
for($i=0;$i<count($mik_bill_users);$i++){
420+
    		 $mikbill_user_packets[$mik_bill_users[$i]['user']] = array_merge($mikbill_user_packets[$mik_bill_users[$i]['user']], $mikbill_packets[$v]);
421-
	$DeletingPackets[$mik_bill_users[$i]['user']] = array_values(array_diff($middleware_packets[$mik_bill_users[$i]['user']],$mikbill_user_packets[$mik_bill_users[$i]['user']]));
421+
		}
422-
	$AddingPackets[$mik_bill_users[$i]['user']]   = array_values(array_diff($mikbill_user_packets[$mik_bill_users[$i]['user']],$middleware_packets[$mik_bill_users[$i]['user']]));
422+
		$mikbill_user_packets[$mik_bill_users[$i]['user']] = array_unique($mikbill_user_packets[$mik_bill_users[$i]['user']]);
423-
	}
423+
    }
424-
log_save('	Добавление пакетов пользователям:'."\n",$log_file);
424+
   }
425-
for($i=0;$i<count($mik_bill_users);$i++){
425+
for($i=0;$i<count($mik_bill_users);$i++){
426-
	if(!empty($AddingPackets[$mik_bill_users[$i]['user']])){
426+
	$DeletingPackets[$mik_bill_users[$i]['user']] = array_values(array_diff($middleware_packets[$mik_bill_users[$i]['user']],$mikbill_user_packets[$mik_bill_users[$i]['user']]));
427-
		$res = jsonsql_call ("insert", array (
427+
	$AddingPackets[$mik_bill_users[$i]['user']]   = array_values(array_diff($mikbill_user_packets[$mik_bill_users[$i]['user']],$middleware_packets[$mik_bill_users[$i]['user']]));
428-
	    	"into" => "subscriber_package",
428+
	}
429-
	    	"columns" => array ("subscriber_id", "package_id", "enabled"),
429+
log_save('	Добавление пакетов пользователям:'."\n",$log_file);
430-
	    	"select" => array (
430+
for($i=0;$i<count($mik_bill_users);$i++){
431-
	        	"data" => array (array ("s" => "id"), array ("p" => "id"), true),
431+
	if(!empty($AddingPackets[$mik_bill_users[$i]['user']])){
432-
	        "from" => array (array (
432+
		$res = jsonsql_call ("insert", array (
433-
            "table" => "subscriber", "as" => "s"
433+
	    	"into" => "subscriber_package",
434-
	        ), array (
434+
	    	"columns" => array ("subscriber_id", "package_id", "enabled"),
435-
	            "table" => "package", "as" => "p"
435+
	    	"select" => array (
436-
	        )),
436+
	        	"data" => array (array ("s" => "id"), array ("p" => "id"), true),
437-
	        "where" => array (
437+
	        "from" => array (array (
438-
	            "and" => array (array (
438+
            "table" => "subscriber", "as" => "s"
439-
                "eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])
439+
	        ), array (
440-
	            ), array (
440+
	            "table" => "package", "as" => "p"
441-
                "in" => array (array ("p" => "id"), $AddingPackets[$mik_bill_users[$i]['user']])
441+
	        )),
442-
	            ))
442+
	        "where" => array (
443-
	        )
443+
	            "and" => array (array (
444-
	    ),
444+
                "eq" => array (array ("s" => "username"), $mik_bill_users[$i]['user'])
445-
	    "returning" => "package_id"
445+
	            ), array (
446-
		));
446+
                "in" => array (array ("p" => "id"), $AddingPackets[$mik_bill_users[$i]['user']])
447-
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
447+
	            ))
448-
	}else{
448+
	        )
449-
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
449+
	    ),
450-
	}
450+
	    "returning" => "package_id"
451-
}
451+
		));
452-
log_save('	Удаление пакетов у пользователей:'."\n",$log_file);
452+
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
453-
for($i=0;$i<count($mik_bill_users);$i++){
453+
	}else{
454-
	if(!empty($DeletingPackets[$mik_bill_users[$i]['user']])){
454+
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
455-
	$res = jsonsql_call ("delete", array (
455+
	}
456-
    "from" => "subscriber_package",
456+
}
457-
    "where" => array ("and" => array (
457+
log_save('	Удаление пакетов у пользователей:'."\n",$log_file);
458-
        array ("in" => array ("subscriber_id", array (
458+
for($i=0;$i<count($mik_bill_users);$i++){
459-
            "select" => array (
459+
	if(!empty($DeletingPackets[$mik_bill_users[$i]['user']])){
460-
                "data" => "id",
460+
	$res = jsonsql_call ("delete", array (
461-
                "from" => "subscriber",
461+
    "from" => "subscriber_package",
462-
                "where" => array ("eq" => array ("username", $mik_bill_users[$i]['user']))
462+
    "where" => array ("and" => array (
463-
            )
463+
        array ("in" => array ("subscriber_id", array (
464-
        ))), array ("in" => array ("package_id", array (
464+
            "select" => array (
465-
            "select" => array (
465+
                "data" => "id",
466-
                "data" => "id",
466+
                "from" => "subscriber",
467-
                "from" => "package",
467+
                "where" => array ("eq" => array ("username", $mik_bill_users[$i]['user']))
468-
                "where" => array ("in" => array ("id", $DeletingPackets[$mik_bill_users[$i]['user']]))
468+
            )
469-
            )
469+
        ))), array ("in" => array ("package_id", array (
470-
        )))
470+
            "select" => array (
471-
    )),
471+
                "data" => "id",
472-
    "returning" => "package_id"
472+
                "from" => "package",
473-
	));
473+
                "where" => array ("in" => array ("id", $DeletingPackets[$mik_bill_users[$i]['user']]))
474-
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
474+
            )
475-
	}else{
475+
        )))
476-
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
476+
    )),
477-
	}
477+
    "returning" => "package_id"
478-
}
478+
	));
479-
//if(ob_get_length()>0){
479+
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' прошло успешно'."\n",$log_file);
480-
//	log_save('7) Предупреждения, которые возникли в процессе выполнения кода: ',$log_file);
480+
	}else{
481-
//	log_save(ob_get_contents(),$log_file);
481+
		log_save('		У пользователя '.$mik_bill_users[$i]['user'].' не требуется'."\n",$log_file);
482-
//	log_save('7) Всем спасибо, все свободны :)',$log_file);
482+
	}
483-
//}else{
483+
}
484-
	log_save('7) Всем спасибо, все свободны :)',$log_file);
484+
//if(ob_get_length()>0){
485-
//}
485+
//	log_save('7) Предупреждения, которые возникли в процессе выполнения кода: ',$log_file);
486-
ob_end_clean();
486+
//	log_save(ob_get_contents(),$log_file);
487-
echo str_replace(array("\r","\n"),"<br>\n",file_get_contents($log_file));
487+
//	log_save('7) Всем спасибо, все свободны :)',$log_file);
488-
if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",str_replace("	", "&nbsp;&nbsp;&nbsp;", file_get_contents($log_file))),$mail_headers);}
488+
//}else{
489-
//всё... код окончен, дальше чисто использумые функции...
489+
	log_save('7) Всем спасибо, все свободны :)',$log_file);
490-
function fatal_error($message){
490+
//}
491-
	global $log_file,$mail_to_admin,$mail_to,$mail_subj,$mail_headers;
491+
ob_end_clean();
492-
    log_save('FATAL ERROR: '.$message,$log_file);
492+
echo str_replace(array("\r","\n"),"<br>\n",file_get_contents($log_file));
493-
    if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",file_get_contents($log_file)),$mail_headers);}
493+
if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",str_replace("	", "&nbsp;&nbsp;&nbsp;", file_get_contents($log_file))),$mail_headers);}
494-
    die($message);
494+
//всё... код окончен, дальше чисто использумые функции...
495-
}
495+
function fatal_error($message){
496-
496+
	global $log_file,$mail_to_admin,$mail_to,$mail_subj,$mail_headers;
497-
function log_save($logtext, $log_file){echo $logtext.'<br>';
497+
    log_save('FATAL ERROR: '.$message,$log_file);
498-
$h = fopen($log_file , 'ab');
498+
    if($mail_to_admin){smtpmail($mail_to,$mail_subj,str_replace(array("\r","\n"),"<br>",file_get_contents($log_file)),$mail_headers);}
499-
fwrite($h, $logtext . "\n");
499+
    die($message);
500-
fclose($h);
500+
}
501-
}
501+
502-
502+
function log_save($logtext, $log_file){echo $logtext.'<br>';
503-
function smtpmail($mail_to, $subject, $message, $headers='') {
503+
$h = fopen($log_file , 'ab');
504-
    global $config;
504+
fwrite($h, $logtext . "\n");
505-
    $SEND = "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
505+
fclose($h);
506-
    $SEND .=    'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
506+
}
507-
    if ($headers) $SEND .= $headers."\r\n\r\n";
507+
508-
    else
508+
function smtpmail($mail_to, $subject, $message, $headers='') {
509-
    {
509+
    global $config;
510-
            $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
510+
    $SEND = "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
511-
            $SEND .= "MIME-Version: 1.0\r\n";
511+
    $SEND .=    'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
512-
            $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
512+
    if ($headers) $SEND .= $headers."\r\n\r\n";
513-
            $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
513+
    else
514-
            $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
514+
    {
515-
            $SEND .= "To: $mail_to <$mail_to>\r\n";
515+
            $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
516-
            $SEND .= "X-Priority: 3\r\n\r\n";
516+
            $SEND .= "MIME-Version: 1.0\r\n";
517-
    }
517+
            $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
518-
    $SEND .=  $message."\r\n";
518+
            $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
519-
     if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
519+
            $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
520-
        if ($config['smtp_debug']) echo $errno."&lt;br&gt;".$errstr;
520+
            $SEND .= "To: $mail_to <$mail_to>\r\n";
521-
        return false;
521+
            $SEND .= "X-Priority: 3\r\n\r\n";
522-
     }
522+
    }
523-
523+
    $SEND .=  $message."\r\n";
524-
    if (!server_parse($socket, "220", __LINE__)) return false;
524+
     if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
525-
525+
        if ($config['smtp_debug']) echo $errno."&lt;br&gt;".$errstr;
526-
    fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
526+
        return false;
527-
    if (!server_parse($socket, "250", __LINE__)) {
527+
     }
528-
        if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
528+
529-
        fclose($socket);
529+
    if (!server_parse($socket, "220", __LINE__)) return false;
530-
        return false;
530+
531-
    }
531+
    fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
532-
    fputs($socket, "AUTH LOGIN\r\n");
532+
    if (!server_parse($socket, "250", __LINE__)) {
533-
    if (!server_parse($socket, "334", __LINE__)) {
533+
        if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
534-
        if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
534+
        fclose($socket);
535-
        fclose($socket);
535+
        return false;
536-
        return false;
536+
    }
537-
    }
537+
    fputs($socket, "AUTH LOGIN\r\n");
538-
    fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
538+
    if (!server_parse($socket, "334", __LINE__)) {
539-
    if (!server_parse($socket, "334", __LINE__)) {
539+
        if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
540-
        if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
540+
        fclose($socket);
541-
        fclose($socket);
541+
        return false;
542-
        return false;
542+
    }
543-
    }
543+
    fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
544-
    fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
544+
    if (!server_parse($socket, "334", __LINE__)) {
545-
    if (!server_parse($socket, "235", __LINE__)) {
545+
        if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
546-
        if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
546+
        fclose($socket);
547-
        fclose($socket);
547+
        return false;
548-
        return false;
548+
    }
549-
    }
549+
    fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
550-
    fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
550+
    if (!server_parse($socket, "235", __LINE__)) {
551-
    if (!server_parse($socket, "250", __LINE__)) {
551+
        if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
552-
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
552+
        fclose($socket);
553-
        fclose($socket);
553+
        return false;
554-
        return false;
554+
    }
555-
    }
555+
    fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
556-
    fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
556+
    if (!server_parse($socket, "250", __LINE__)) {
557-
557+
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
558-
    if (!server_parse($socket, "250", __LINE__)) {
558+
        fclose($socket);
559-
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
559+
        return false;
560-
        fclose($socket);
560+
    }
561-
        return false;
561+
    fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
562-
    }
562+
563-
    fputs($socket, "DATA\r\n");
563+
    if (!server_parse($socket, "250", __LINE__)) {
564-
564+
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
565-
    if (!server_parse($socket, "354", __LINE__)) {
565+
        fclose($socket);
566-
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
566+
        return false;
567-
        fclose($socket);
567+
    }
568-
        return false;
568+
    fputs($socket, "DATA\r\n");
569-
    }
569+
570-
    fputs($socket, $SEND."\r\n.\r\n");
570+
    if (!server_parse($socket, "354", __LINE__)) {
571-
571+
        if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
572-
    if (!server_parse($socket, "250", __LINE__)) {
572+
        fclose($socket);
573-
        if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
573+
        return false;
574-
        fclose($socket);
574+
    }
575-
        return false;
575+
    fputs($socket, $SEND."\r\n.\r\n");
576-
    }
576+
577-
    fputs($socket, "QUIT\r\n");
577+
    if (!server_parse($socket, "250", __LINE__)) {
578-
    fclose($socket);
578+
        if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
579-
    return TRUE;
579+
        fclose($socket);
580-
}
580+
        return false;
581-
581+
    }
582-
function server_parse($socket, $response, $line = __LINE__) {
582+
    fputs($socket, "QUIT\r\n");
583-
    global $config;
583+
    fclose($socket);
584-
	$server_response='';
584+
    return TRUE;
585-
    while (@substr($server_response, 3, 1) != ' ') {
585+
}
586-
        if (!($server_response = fgets($socket, 256))) {
586+
587-
            if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
587+
function server_parse($socket, $response, $line = __LINE__) {
588-
            return false;
588+
    global $config;
589-
        }
589+
	$server_response='';
590-
    }
590+
    while (@substr($server_response, 3, 1) != ' ') {
591-
    if (!(substr($server_response, 0, 3) == $response)) {
591+
        if (!($server_response = fgets($socket, 256))) {
592-
        if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
592+
            if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
593-
        return false;
593+
            return false;
594-
    }
594+
        }
595-
    return true;
595+
    }
596-
}
596+
    if (!(substr($server_response, 0, 3) == $response)) {
597-
597+
        if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
598-
function send ($url, $data, $extra_headers=null) {
598+
        return false;
599-
    $ch = curl_init ();
599+
    }
600-
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,  10);
600+
    return true;
601-
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER,  true);
601+
}
602-
    curl_setopt ($ch, CURLOPT_TIMEOUT,         10);
602+
603-
    curl_setopt ($ch, CURLOPT_URL,             $url);
603+
function send ($url, $data, $extra_headers=null) {
604-
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,  false);
604+
    $ch = curl_init ();
605-
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST,  false);
605+
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,  10);
606-
    curl_setopt ($ch, CURLOPT_POST,            true);
606+
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER,  true);
607-
    curl_setopt ($ch, CURLOPT_POSTFIELDS,      $data);
607+
    curl_setopt ($ch, CURLOPT_TIMEOUT,         10);
608-
    if (isset ($extra_headers)) {
608+
    curl_setopt ($ch, CURLOPT_URL,             $url);
609-
        curl_setopt ($ch, CURLOPT_HTTPHEADER,  $extra_headers);
609+
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,  false);
610-
    }
610+
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST,  false);
611-
    $content = curl_exec ($ch);
611+
    curl_setopt ($ch, CURLOPT_POST,            true);
612-
    $http_code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);
612+
    curl_setopt ($ch, CURLOPT_POSTFIELDS,      $data);
613-
    if ($content === false) {
613+
    if (isset ($extra_headers)) {
614-
        $err_msg = "HTTP error: $http_code (" . curl_error($ch) . ')' . '\n';
614+
        curl_setopt ($ch, CURLOPT_HTTPHEADER,  $extra_headers);
615-
        echo $err_msg;
615+
    }
616-
        throw new Exception ($err_msg);
616+
    $content = curl_exec ($ch);
617-
    }
617+
    $http_code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);
618-
    if ($http_code != 200) {
618+
    if ($content === false) {
619-
        $err_msg = "HTTP request failed ($http_code)\n";
619+
        $err_msg = "HTTP error: $http_code (" . curl_error($ch) . ')' . '\n';
620-
        echo $err_msg;
620+
        echo $err_msg;
621-
        throw new Exception ($err_msg);
621+
        throw new Exception ($err_msg);
622-
    }
622+
    }
623-
    curl_close ($ch);
623+
    if ($http_code != 200) {
624-
    return $content;
624+
        $err_msg = "HTTP request failed ($http_code)\n";
625-
}
625+
        echo $err_msg;
626-
626+
        throw new Exception ($err_msg);
627-
function jsonrpc_call ($url, $method, $params, $extra_headers=null) {
627+
    }
628-
    static $req_id = 1;
628+
    curl_close ($ch);
629-
    $req = array (
629+
    return $content;
630-
        "jsonrpc" => '2.0',
630+
}
631-
        "id" => $req_id++,
631+
632-
        "method" => $method,
632+
function jsonrpc_call ($url, $method, $params, $extra_headers=null) {
633-
        "params" => $params
633+
    static $req_id = 1;
634-
    );
634+
    $req = array (
635-
    $req = json_encode ($req);
635+
        "jsonrpc" => '2.0',
636-
    $res = send ($url, $req, $extra_headers=$extra_headers);
636+
        "id" => $req_id++,
637-
    #echo $res;
637+
        "method" => $method,
638-
    $res = json_decode ($res, true);
638+
        "params" => $params
639-
    if (!isset ($res)) {
639+
    );
640-
        echo "error: not result\n";
640+
    $req = json_encode ($req);
641-
        return null;
641+
    $res = send ($url, $req, $extra_headers=$extra_headers);
642-
    } else if (!array_key_exists ('result', $res) || !isset ($res ['result'])) {
642+
    #echo $res;
643-
        print_r ($res ['error']);
643+
    $res = json_decode ($res, true);
644-
        return null;
644+
    if (!isset ($res)) {
645-
    } else {
645+
        echo "error: not result\n";
646-
        return $res ['result'];
646+
        return null;
647-
    }
647+
    } else if (!array_key_exists ('result', $res) || !isset ($res ['result'])) {
648-
    return $res;
648+
        print_r ($res ['error']);
649-
}
649+
        return null;
650-
650+
    } else {
651-
function jsonsql_call ($cmd, $params) {
651+
        return $res ['result'];
652-
    global $_jsonsql_uri, $_iptvportal_header;
652+
    }
653-
    return jsonrpc_call ($_jsonsql_uri, $cmd, $params, $extra_headers=$_iptvportal_header);
653+
    return $res;
654-
}
654+
}
655-
655+
656-
function authorize_user ($auth_uri, $username, $password) {
656+
function jsonsql_call ($cmd, $params) {
657-
    global $_iptvportal_header;
657+
    global $_jsonsql_uri, $_iptvportal_header;
658-
    $res = jsonrpc_call ($auth_uri, $cmd="authorize_user", $params=array (
658+
    return jsonrpc_call ($_jsonsql_uri, $cmd, $params, $extra_headers=$_iptvportal_header);
659-
        'username' => $username,
659+
}
660-
        'password' => $password
660+
661-
    ));
661+
function authorize_user ($auth_uri, $username, $password) {
662-
    if (isset ($res) && array_key_exists ('session_id', $res)) {
662+
    global $_iptvportal_header;
663-
        $_iptvportal_header = array ('Iptvportal-Authorization: ' . 'sessionid=' . $res ['session_id']);
663+
    $res = jsonrpc_call ($auth_uri, $cmd="authorize_user", $params=array (
664-
    }
664+
        'username' => $username,
665-
    return $res;
665+
        'password' => $password
666-
}
666+
    ));
667
    if (isset ($res) && array_key_exists ('session_id', $res)) {
668
        $_iptvportal_header = array ('Iptvportal-Authorization: ' . 'sessionid=' . $res ['session_id']);
669
    }
670
    return $res;
671
}
672
?>