Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.51 KB | None | 0 0
  1. <?php
  2. class getChannel {
  3.  
  4. private static $eventName = 'getChannel';
  5. private static $config;
  6. private static $simpleConfig = array(
  7. );
  8. private static $cacheNames = array();
  9. private static $clientsNeedHelp = array();
  10.  
  11. private static function loadConfig() {
  12. global $lang;
  13. $cfg = getEventConfigValue(self::$eventName);
  14. if ($cfg != false) {
  15. self::$config = $cfg;
  16. } else {
  17. self::$config = self::$simpleConfig;
  18. echo ": > [".self::$eventName."]: ".$lang->getConsoleLanguage('SIMPLE_CONFIGURATION')."\n";
  19. }
  20. return true;
  21. }
  22.  
  23. public static function onRegister() {
  24. global $cache;
  25. self::loadConfig();
  26.  
  27. return true;
  28. }
  29. private static function getFirstFreeChannel($commandConfig) {
  30. global $ts, $cache;
  31. $channelList = $cache->getCacheValue('ch_channels');
  32. $channelsInSection = array();
  33. $channelsIdList = array();
  34. foreach ($channelList as $channel) {
  35. if ($channel['pid'] == $commandConfig['channels_section'])
  36. $channelsInSection[] = $channel['channel_name'];
  37. }
  38. foreach ($channelsInSection as $channelName) {
  39. $channelsIdList[] = preg_replace($commandConfig['channel_num_regex'],'\1',$channelName);
  40. }
  41. unset($channelsInSection,$channelList);
  42. for ($i=1;$i>=1;$i++) {
  43. if (!in_array($i,$channelsIdList))
  44. return $i;
  45. }
  46. }
  47.  
  48. private static function getLastChannelSubChannel($cid) {
  49. global $ts, $cache;
  50. $channelList = $cache->getCacheValue('ch_channels');
  51. $channelSubs = array();
  52. foreach ($channelList as $channel) {
  53. if ($channel['pid'] == $cid)
  54. $channelSubs[] = $channel;
  55. }
  56. return @$channelSubs[count($channelSubs)-1] or false;
  57. }
  58.  
  59. private static function checkGroups($clientGroups, $groups) {
  60. foreach ($clientGroups as $clientGroup) {
  61. if (in_array($clientGroup,$groups))
  62. return true;
  63. }
  64. return false;
  65. }
  66.  
  67. public static function checkText($input, $maximalCharsNums){
  68. $output;
  69. $SRaw = $input;
  70. $maximalCharsNum = $maximalCharsNums;
  71. $maximalCharsNum += 2;
  72. if(strlen($SRaw) >= $maximalCharsNum){
  73. $output = substr($SRaw, 0, $maximalCharsNum)."";
  74. } else {
  75. $output = $SRaw;
  76. }
  77. return $output;
  78. }
  79.  
  80. private static function ID($client)
  81. {
  82. return '[URL=client://0/'.$client['client_unique_identifier'].'~'.urlencode($client['client_nickname']).']'.$client['client_nickname'].'[/URL]';
  83. }
  84.  
  85. public static function onClientAreOnChannel($clid = null,$cid = 0,$invokerid = null,$clientsData = null) {
  86. global $ts, $kernel, $lang, $cache, $whoami;
  87.  
  88. $cgroups = $ts->getElement('data',$ts->channelGroupClientList(null, $invokerid['client_database_id'], self::$config['channel_admin_group_id']));
  89.  
  90. $create = true;
  91. if($cgroups[0][""] === ""){ $create = false; } else { $found_c = $cgroups[0]["cid"]; }
  92.  
  93. $channelFound = false;
  94. $clientGroups = explode(",",$invokerid['client_servergroups']);
  95. if(self::checkGroups($clientGroups, self::$config['need_groups'])){
  96. if($create == false){
  97. if ($clid != $whoami['client_id'] && array_key_exists('client_nickname',$invokerid) == true){
  98. foreach ($ts->getElement($ts->getChannelList("-topic -limits"),'data') as $channel) {
  99. if($channel['pid'] == self::$config['channels_section']){
  100. if($channel['channel_topic'] == '#free'){
  101. $channelFound = $channel;
  102. break;
  103. }
  104. }
  105. }
  106. if($channelFound){
  107. list($number, $rest) = explode(".", $channelFound['channel_name']);
  108. $ts->editChannel($channelFound['cid'],
  109. [
  110. 'channel_topic' => date('d').'.'.date('m').'.'.date('y'),
  111. 'channel_description' => $lang->langReplace(array('[user_nick]', '[date]','[CH_NUM]'), array(self::ID($invokerid), date("d/m/y H:i", time()), $number), 'CH_NEW_DESCRIPTION'),
  112. 'channel_name' => $number.'. '.self::checkText($invokerid['client_nickname'], 15). ' - Kanał',
  113. 'channel_flag_maxclients_unlimited' => 1,
  114. 'channel_flag_maxfamilyclients_unlimited' => 1,
  115. 'channel_maxclients' => 1,
  116. 'channel_maxfamilyclients' => 1,
  117. 'channel_password' => '12345'
  118. ]
  119. );
  120.  
  121. $ts->moveClient($clid,$channelFound['cid']);
  122. $ts->sendMessage(1, $clid,$lang->langReplace(array('[USER_CLID]','[USER_UNIQ]','[USER_NAME]','[CH_ID]','[CH_NUM]'),array($invokerid['clid'], $invokerid['client_unique_identifier'], $invokerid['client_nickname'], $channel['cid'], $number),'CH_USER'));
  123. $ts->setClientChannelGroup($channelFound['cid'],self::$config['channel_admin_group_id'], $invokerid['client_database_id']);
  124.  
  125. if (self::$config['max_subchannels'] > 0) {
  126. for ($i = 1; $i <= self::$config['max_subchannels']; $i++) {
  127. $ts->createChannel(
  128. [
  129. 'channel_flag_semi_permanent' => 0,
  130. 'channel_flag_permanent' => 1,
  131. 'channel_name' => $i . '. ' . $lang->getLanguage('CH_UPDATE_DEFAULT_NAME'),
  132. 'channel_description' => $lang->langReplace(array('[ID]','[NICK]'),array($i, $invokerid['client_nickname']),'CH_SUB_DESC'),
  133. 'cpid' => $channelFound['cid'],
  134. 'channel_codec' => self::$config['channel_codec'],
  135. 'channel_codec_quality' => self::$config['channel_codec_level'],
  136. 'channel_password' => '12345'
  137. ]
  138. );
  139. }
  140. }
  141. unset($channelFound);
  142. }else{
  143. $ts->pokeClient($clid, 'Nie znaleziono wolnych kanałów!');
  144. $ts->kickClient($clid, 'Nie znaleziono wolnych kanałów!', 'channel');
  145. }
  146. }
  147. }else{
  148. $channelInfo = $ts->getElement($ts->getChannelInfo($found_c), 'data');
  149. list($number, $name) = explode(".", $channelInfo['channel_name'], 2);
  150. $ts->sendMessage(1, $clid, $lang->langReplace(array('[USER_CLID]','[USER_UNIQ]','[USER_NAME]','[CH_NUMB]','[CH_NAME]'),array($invokerid['clid'],$invokerid['client_unique_identifier'],$invokerid['client_nickname'], $number,$name),'CH_USER_BAD'));
  151. $ts->moveClient($clid, $found_c);
  152. }
  153. }else{
  154. $ts->pokeClient($clid, 'Aby otrzymać kanał najpierw się zarejestruj');
  155. $ts->kickClient($clid, 'Aby otrzymać kanał najpierw się zarejestruj', 'channel');
  156. }
  157. }
  158. }
  159. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement