Advertisement
BlaquuTM

Untitled

Jan 13th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.95 KB | None | 0 0
  1. <?php
  2. /********************************
  3.  
  4. Author: Tymoteusz `Razor Meister` Bartnik
  5.  
  6. Contact: battnik90@gmail.com
  7.  
  8. Function: get_vip_channel()
  9.  
  10. ********************************/
  11.  
  12. class get_vip_channel
  13. {
  14. private static $name;
  15. private static $cfg;
  16.  
  17. static public function construct($event_name)
  18. {
  19. global $cfg;
  20. self::$cfg = $cfg[$event_name];
  21. self::$name = $event_name;
  22. }
  23.  
  24. static public function before_clients()
  25. {
  26. global $query, $xbot, $query_sql, $language, $cfg;
  27.  
  28. if(!isset($query_sql))
  29. return;
  30.  
  31. foreach(self::$cfg['info'] as $type => $info)
  32. {
  33. $result = $query_sql->query("SELECT * FROM `vip_channels` WHERE `type_id`='".$type."' ORDER BY `id` ASC");
  34. $lang = $language['function']['get_private_channel'];
  35.  
  36. if($result->rowCount() != 0)
  37. {
  38. $result = $result->fetchAll(PDO::FETCH_ASSOC);
  39.  
  40. foreach($result as $channel)
  41. {
  42. if($query->getElement('data', $query->channelInfo($channel['channel_cid'])) == NULL)
  43. {
  44. if($channel['spacer_cid'] != 0 && $query->getElement('data', $query->channelInfo($channel['spacer_cid'])) != NULL)
  45. $query->channelDelete($channel['spacer_cid']);
  46.  
  47. if(class_exists('get_server_group'))
  48. foreach($cfg['get_server_group']['if_client_on_channel'] as $index => $cid)
  49. if($cid == $channel['get_group'])
  50. unset($cfg['get_server_group']['if_client_on_channel'][$index]);
  51.  
  52. if(class_exists('online_from_server_group'))
  53. online_from_server_group::$disabled_groups[] = $channel['group_id'];
  54.  
  55. if($cfg['move_groups']['enabled'] && $cfg['move_groups']['vip_channels_from_xbot']['enabled'])
  56. {
  57. foreach(move_groups::$from_vip_channels as $key => $infoGroup)
  58. {
  59. if(in_array($channel['group_id'], $infoGroup['groups']))
  60. {
  61. unset(move_groups::$from_vip_channels[$key]);
  62. break;
  63. }
  64. }
  65. }
  66.  
  67. $query->serverGroupDelete($channel['group_id']);
  68. $query_sql->exec("DELETE FROM `vip_channels` WHERE id=".$channel['id']);
  69.  
  70. foreach($result as $res)
  71. {
  72. if($res['id'] > $channel['id'] && $res['type_id'] == $type)
  73. {
  74. $client = $query->getElement('data', $query->clientDbInfo($res['owner_dbid']));
  75.  
  76. $desc = "[center][size=11]Kanał vip nr. [b][color=red]".($res['channel_num']-1)."[/color][/b][/center]\n";
  77. $desc .= "[center]• [size=11]Właściciel kanału: [b][URL=client://2/".$client['client_unique_identifier']."]".$client['client_nickname']."[/url][/b][/size]\n• [size=11]Data stworzenia: [color=red][b]".date('d-m-Y G:i', $res['created'])."\n[/b][/color][/size][/center]\n".$language['function']['down_desc'];
  78.  
  79. $query_sql->exec("UPDATE `vip_channels` SET `channel_num`=".($res['channel_num']-1)." WHERE id=".$res['id']);
  80. $query->channelEdit($res['channel_cid'], array('channel_name' => str_replace('[NUM]', $res['channel_num']-1, $info['main_channel']), 'channel_description' => $desc));
  81. $query->channelEdit($res['spacer_cid'], array('channel_name' => str_replace('[NUM]', $res['channel_num']-1, $info['spacer_between']['spacer_name'])));
  82.  
  83. foreach($query->getElement('data', $query->serverGroupList()) as $group)
  84. if($group['name'] == $type.$res['channel_num'])
  85. {
  86. $query->serverGroupRename($group['sgid'], $type.($res['channel_num']-1));
  87. break;
  88. }
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. }
  96.  
  97. static public function main($client)
  98. {
  99. global $query, $language, $clients, $xbot, $query_sql, $cfg, $logs_manager;
  100.  
  101. if(!isset($query_sql))
  102. {
  103. $query->clientPoke($client['clid'], $language['function']['get_vip_channel']['error_db']);
  104. return;
  105. }
  106.  
  107. foreach(self::$cfg['info'] as $type => $info)
  108. {
  109. if($client['cid'] != $info['if_on_channel'])
  110. continue;
  111.  
  112. $result = $query_sql->query("SELECT * FROM `vip_channels` WHERE `owner_dbid`=".$client['client_database_id']." AND `type_id`='".$type."'");
  113. if($result->rowCount() != 0)
  114. {
  115. $query->clientPoke($client['clid'], str_replace('[TYPE]', $type, $language['function']['get_vip_channel']['has_channel']));
  116. continue;
  117. }
  118.  
  119. $result = $query_sql->query("SELECT * FROM `vip_channels` WHERE `type_id`='".$type."' ORDER BY `id` ASC");
  120. $empty = false;
  121. $no_channel = false;
  122. $edit_db = false;
  123. $lang = $language['function']['get_private_channel'];
  124.  
  125. if($result->rowCount() == 0)
  126. {
  127. $last_channel = $info['after_channel'];
  128. $number = 1;
  129. }
  130. else
  131. {
  132. $result = $result->fetchAll(PDO::FETCH_ASSOC);
  133.  
  134. foreach($result as $channel)
  135. {
  136. $channel_info = $query->getElement('data', $query->channelInfo($channel['channel_cid']));
  137.  
  138. if($channel_info == NULL)
  139. {
  140. $no_channel = true;
  141. break;
  142. }
  143.  
  144. if($info['spacer_between']['enabled'])
  145. {
  146. $spacer_info = $query->getElement('data', $query->channelInfo($channel['spacer_cid']));
  147.  
  148. if($spacer_info == NULL)
  149. {
  150. $spacer = $query->channelCreate(array
  151. (
  152. 'channel_name' => str_replace('[NUM]', $channel['channel_num'], $info['spacer_between']['spacer_name']),
  153. 'channel_flag_semi_permanent' => 0,
  154. 'channel_flag_permanent' => 1,
  155. 'channel_flag_maxclients_unlimited' => 0,
  156. 'channel_flag_maxfamilyclients_unlimited' => 0,
  157. 'channel_flag_maxfamilyclients_inherited' => 0,
  158. 'channel_order' => $channel['channel_cid'],
  159. 'channel_maxclients' => 0,
  160. 'channel_maxfamilyclients' => 0,
  161. ));
  162. $query->channelAddPerm($spacer['data']['cid'], array(NEEDED_MODIFY_POWER => $info['spacer_between']['modify_needed'], NEEDED_JOIN_POWER => $info['spacer_between']['join_needed']));
  163.  
  164. $query_sql->exec("UPDATE `vip_channels` SET `spacer_cid`=".$spacer['data']['cid']." WHERE `id` = ".$channel['id']);
  165. $channel['spacer_cid'] = $spacer['data']['cid'];
  166. usleep(500000);
  167. }
  168. }
  169.  
  170. if($channel_info['channel_topic'] == $info['empty_topic'])
  171. {
  172. $empty = true;
  173. break;
  174. }
  175.  
  176. $last_channel_db = $channel;
  177. }
  178.  
  179.  
  180. if(!$empty && !$no_channel)
  181. {
  182. if($info['spacer_between']['enabled'])
  183. $last_channel = $channel['spacer_cid'];
  184. else
  185. $last_channel = $channel['channel_cid'];
  186.  
  187. $number = $channel['channel_num'] + 1;
  188. }
  189. elseif($no_channel)
  190. {
  191. if(isset($last_channel_db))
  192. {
  193. $number = $channel['channel_num'];
  194.  
  195. if($info['spacer_between']['enabled'])
  196. $last_channel = $last_channel_db['spacer_cid'];
  197. else
  198. $last_channel = $last_channel_db['channel_cid'];
  199. }
  200. else
  201. {
  202. $last_channel = $info['after_channel'];
  203. $number = 1;
  204. }
  205.  
  206. $edit_db = true;
  207. }
  208. else
  209. {
  210. $number = $channel['channel_num'];
  211. $edit_db = true;
  212. }
  213. }
  214.  
  215. $desc = "[center][size=11]Kanał VIP nr. [b][color=red]".$number."[/color][/b][/center]\n";
  216. $desc .= "[center]• [size=11]Właściciel kanału: [b][URL=client://2/".$client['client_unique_identifier']."]".$client['client_nickname']."[/url][/b][/size]\n• [size=11]Data stworzenia: [color=red][b]".date('d-m-Y G:i', $res['created'])."\n[/b][/color][/size][/center]\n".$language['function']['down_desc'];
  217.  
  218. if(!$empty)
  219. {
  220. $name_channel = $query->channelCreate(array
  221. (
  222. 'channel_name' => str_replace('[NUM]', $number, $info['main_channel']),
  223. 'channel_topic' => date('d-m-Y G:i'),
  224. 'channel_flag_semi_permanent' => 0,
  225. 'channel_flag_permanent' => 1,
  226. 'channel_flag_maxclients_unlimited' => 1,
  227. 'channel_flag_maxfamilyclients_unlimited' => 1,
  228. 'channel_flag_maxfamilyclients_inherited' => 0,
  229. 'channel_order' => $last_channel,
  230. 'channel_description' => $desc,
  231. ));
  232. $query->channelAddPerm($name_channel['data']['cid'], array(NEEDED_JOIN_POWER => $info['join_needed']));
  233. usleep(1000000);
  234.  
  235. if($name_channel['success'] != 1)
  236. {
  237. $logs_manager::write_info(" [".self::$name."] - ".$language['function']['get_vip_channel']['error_main']);
  238. $query->clientPoke($client['clid'], $language['function']['get_vip_channel']['error']);
  239. return;
  240. }
  241.  
  242. if($info['spacer_between']['enabled'])
  243. {
  244. $spacer = $query->channelCreate(array
  245. (
  246. 'channel_name' => str_replace('[NUM]', $number, $info['spacer_between']['spacer_name']),
  247. 'channel_flag_semi_permanent' => 0,
  248. 'channel_flag_permanent' => 1,
  249. 'channel_flag_maxclients_unlimited' => 0,
  250. 'channel_flag_maxfamilyclients_unlimited' => 0,
  251. 'channel_flag_maxfamilyclients_inherited' => 0,
  252. 'channel_order' => $name_channel['data']['cid'],
  253. 'channel_maxclients' => 0,
  254. 'channel_maxfamilyclients' => 0,
  255. ));
  256. $query->channelAddPerm($spacer['data']['cid'], array(NEEDED_MODIFY_POWER => $info['spacer_between']['modify_needed'], NEEDED_JOIN_POWER => $info['spacer_between']['join_needed']));
  257. usleep(1000000);
  258. }
  259. else
  260. $spacer['data']['cid'] = 0;
  261.  
  262. if($spacer['success'] != 1)
  263. {
  264. $logs_manager::write_info(" [".self::$name."] - ".$language['function']['get_vip_channel']['error_spacer']);
  265. $query->clientPoke($client['clid'], $language['function']['get_vip_channel']['error']);
  266. return;
  267. }
  268. }
  269. else
  270. {
  271. $spacer['data']['cid'] = $channel['spacer_cid'];
  272. $name_channel['data']['cid'] = $channel['channel_cid'];
  273.  
  274. $query->channelEdit($channel['channel_cid'], array('channel_topic' => date('d-m-Y G:i'), 'channel_description' => $desc));
  275. }
  276.  
  277.  
  278. if($info['online_from_server_group'] || $info['get_server_group'])
  279. {
  280. $info_channels = $query->channelCreate(array
  281. (
  282. 'channel_name' => "Grupa",
  283. 'channel_flag_semi_permanent' => 0,
  284. 'channel_flag_permanent' => 1,
  285. 'channel_flag_maxclients_unlimited' => 0,
  286. 'channel_flag_maxfamilyclients_unlimited' => 1,
  287. 'channel_flag_maxfamilyclients_inherited' => 0,
  288. 'channel_maxclients' => 0,
  289. 'cpid' => $name_channel['data']['cid'],
  290. ));
  291. usleep(500000);
  292.  
  293. if($info['online_from_server_group'])
  294. $online_from = $query->channelCreate(array
  295. (
  296. 'channel_name' => "Status Online:",
  297. 'channel_flag_semi_permanent' => 0,
  298. 'channel_flag_permanent' => 1,
  299. 'channel_flag_maxclients_unlimited' => 0,
  300. 'channel_flag_maxfamilyclients_unlimited' => 1,
  301. 'channel_flag_maxfamilyclients_inherited' => 0,
  302. 'channel_maxclients' => 0,
  303. 'cpid' => $info_channels['data']['cid'],
  304. ));
  305. else
  306. $online_from['data']['cid'] = 0;
  307.  
  308.  
  309. if($info['get_server_group'])
  310. $get_group = $query->channelCreate(array
  311. (
  312. 'channel_name' => "Nadaj / Zabierz grupę",
  313. 'channel_flag_semi_permanent' => 0,
  314. 'channel_flag_permanent' => 1,
  315. 'channel_flag_maxclients_unlimited' => 0,
  316. 'channel_flag_maxfamilyclients_unlimited' => 1,
  317. 'channel_flag_maxfamilyclients_inherited' => 0,
  318. 'channel_maxclients' => 0,
  319. 'cpid' => $info_channels['data']['cid'],
  320. ));
  321. else
  322. $get_group['data']['cid'] = 0;
  323.  
  324. $query->setClientChannelGroup($info['channel_group_id'], $info_channels['data']['cid'], $client['client_database_id']);
  325. usleep(1000000);
  326. }
  327. else
  328. {
  329. $online_from['data']['cid'] = 0;
  330. $get_group['data']['cid'] = 0;
  331. }
  332.  
  333. $main = $query->channelCreate(array
  334. (
  335. 'channel_name' => "Kanał główny",
  336. 'channel_flag_semi_permanent' => 0,
  337. 'channel_flag_permanent' => 1,
  338. 'channel_flag_maxclients_unlimited' => 0,
  339. 'channel_flag_maxfamilyclients_unlimited' => 1,
  340. 'channel_flag_maxfamilyclients_inherited' => 0,
  341. 'channel_maxclients' => 0,
  342. 'cpid' => $name_channel['data']['cid'],
  343. ));
  344. usleep(1000000);
  345.  
  346.  
  347. for($i=1; $i<=$info['subchannels']; $i++)
  348. {
  349. if($info['subchannels_red'])
  350. $info_channels = $query->channelCreate(array
  351. (
  352. 'channel_name' => str_replace('[NUM]', $i, "[NUM]."),
  353. 'channel_flag_semi_permanent' => 0,
  354. 'channel_flag_permanent' => 1,
  355. 'channel_flag_maxclients_unlimited' => 0,
  356. 'channel_flag_maxfamilyclients_unlimited' => 1,
  357. 'channel_flag_maxfamilyclients_inherited' => 0,
  358. 'channel_maxclients' => 0,
  359. 'cpid' => $main['data']['cid'],
  360. ));
  361. else
  362. $info_channels = $query->channelCreate(array
  363. (
  364. 'channel_name' => str_replace('[NUM]', $i, "[NUM]."),
  365. 'channel_flag_semi_permanent' => 0,
  366. 'channel_flag_permanent' => 1,
  367. 'channel_flag_maxclients_unlimited' => 1,
  368. 'channel_flag_maxfamilyclients_unlimited' => 1,
  369. 'channel_flag_maxfamilyclients_inherited' => 0,
  370. 'cpid' => $main['data']['cid'],
  371. ));
  372.  
  373. usleep(1000000);
  374. }
  375.  
  376. $query->setClientChannelGroup($info['channel_group_id'], $main['data']['cid'], $client['client_database_id']);
  377. $query->clientMove($client['clid'], $main['data']['cid']);
  378.  
  379. foreach($query->getElement('data', $query->serverGroupList()) as $group)
  380. if($group['name'] == $type.$number)
  381. {
  382. $query->serverGroupDelete($group['sgid']);
  383. break;
  384. }
  385.  
  386. $vip_group = $query->serverGroupCopy($info['server_group_copy'], 0, $type.$number, 1);
  387. $vip_group = $vip_group['data']['sgid'];
  388.  
  389. $query->serverGroupAddClient($vip_group, $client['client_database_id']);
  390.  
  391. if(!in_array($get_group['data']['cid'], $cfg['get_server_group']['if_client_on_channel']) && $info['get_server_group'])
  392. array_push($cfg['get_server_group']['if_client_on_channel'], $get_group['data']['cid']);
  393.  
  394. if(!$edit_db)
  395. {
  396. $query_sql->exec("INSERT INTO `vip_channels`
  397. (`type_id`, `channel_num`,`channel_cid`,`spacer_cid`,`online_from`,`get_group`,`owner_dbid`,`group_id`,`created`) VALUES
  398. ('$type', $number,".$name_channel['data']['cid'].",".$spacer['data']['cid'].",".$online_from['data']['cid'].",".$get_group['data']['cid'].",".$client['client_database_id'].",".$vip_group.",".time().")");
  399.  
  400. if($cfg['move_groups']['enabled'] && $cfg['move_groups']['vip_channels_from_xbot']['enabled'])
  401. move_groups::$from_vip_channels[] = array('is_on_channel' => $cfg['move_groups']['vip_channels_from_xbot']['is_on_channel'], 'move_to_channel' => $name_channel['data']['cid'], 'groups' => array($vip_group), 'ignored_groups' => $cfg['move_groups']['vip_channels_from_xbot']['ignored_groups']);
  402. }
  403. else
  404. $query_sql->exec("UPDATE `vip_channels` SET `channel_cid`=".$name_channel['data']['cid'].",`spacer_cid`=".$spacer['data']['cid'].",`online_from`=".$online_from['data']['cid'].",`get_group`=".$get_group['data']['cid'].",`owner_dbid`=".$client['client_database_id'].",`group_id`=".$vip_group.",`created`=".time()." WHERE `id`=".$channel['id']."");
  405.  
  406. $query->clientPoke($client['clid'], str_replace(array('[TYPE]', '[NUM]'), array($type, $number), $language['function']['get_vip_channel']['message']));
  407. $xbot::set_action(self::$name, array('client' => $client, 'type' => $type, 'number' => $number));
  408. }
  409. }
  410. }
  411. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement