Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class getChannel {
- private static $eventName = 'getChannel';
- private static $config;
- private static $simpleConfig = array(
- );
- private static $cacheNames = array();
- private static $clientsNeedHelp = array();
- private static function loadConfig() {
- global $lang;
- $cfg = getEventConfigValue(self::$eventName);
- if ($cfg != false) {
- self::$config = $cfg;
- } else {
- self::$config = self::$simpleConfig;
- echo ": > [".self::$eventName."]: ".$lang->getConsoleLanguage('SIMPLE_CONFIGURATION')."\n";
- }
- return true;
- }
- public static function onRegister() {
- global $cache;
- self::loadConfig();
- return true;
- }
- private static function getFirstFreeChannel($commandConfig) {
- global $ts, $cache;
- $channelList = $cache->getCacheValue('ch_channels');
- $channelsInSection = array();
- $channelsIdList = array();
- foreach ($channelList as $channel) {
- if ($channel['pid'] == $commandConfig['channels_section'])
- $channelsInSection[] = $channel['channel_name'];
- }
- foreach ($channelsInSection as $channelName) {
- $channelsIdList[] = preg_replace($commandConfig['channel_num_regex'],'\1',$channelName);
- }
- unset($channelsInSection,$channelList);
- for ($i=1;$i>=1;$i++) {
- if (!in_array($i,$channelsIdList))
- return $i;
- }
- }
- private static function getLastChannelSubChannel($cid) {
- global $ts, $cache;
- $channelList = $cache->getCacheValue('ch_channels');
- $channelSubs = array();
- foreach ($channelList as $channel) {
- if ($channel['pid'] == $cid)
- $channelSubs[] = $channel;
- }
- return @$channelSubs[count($channelSubs)-1] or false;
- }
- private static function checkGroups($clientGroups, $groups) {
- foreach ($clientGroups as $clientGroup) {
- if (in_array($clientGroup,$groups))
- return true;
- }
- return false;
- }
- public static function checkText($input, $maximalCharsNums){
- $output;
- $SRaw = $input;
- $maximalCharsNum = $maximalCharsNums;
- $maximalCharsNum += 2;
- if(strlen($SRaw) >= $maximalCharsNum){
- $output = substr($SRaw, 0, $maximalCharsNum)."";
- } else {
- $output = $SRaw;
- }
- return $output;
- }
- private static function ID($client)
- {
- return '[URL=client://0/'.$client['client_unique_identifier'].'~'.urlencode($client['client_nickname']).']'.$client['client_nickname'].'[/URL]';
- }
- public static function onClientAreOnChannel($clid = null,$cid = 0,$invokerid = null,$clientsData = null) {
- global $ts, $kernel, $lang, $cache, $whoami;
- $cgroups = $ts->getElement('data',$ts->channelGroupClientList(null, $invokerid['client_database_id'], self::$config['channel_admin_group_id']));
- $create = true;
- if($cgroups[0][""] === ""){ $create = false; } else { $found_c = $cgroups[0]["cid"]; }
- $channelFound = false;
- $clientGroups = explode(",",$invokerid['client_servergroups']);
- if(self::checkGroups($clientGroups, self::$config['need_groups'])){
- if($create == false){
- if ($clid != $whoami['client_id'] && array_key_exists('client_nickname',$invokerid) == true){
- foreach ($ts->getElement($ts->getChannelList("-topic -limits"),'data') as $channel) {
- if($channel['pid'] == self::$config['channels_section']){
- if($channel['channel_topic'] == '#free'){
- $channelFound = $channel;
- break;
- }
- }
- }
- if($channelFound){
- list($number, $rest) = explode(".", $channelFound['channel_name']);
- $ts->editChannel($channelFound['cid'],
- [
- 'channel_topic' => date('d').'.'.date('m').'.'.date('y'),
- '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'),
- 'channel_name' => $number.'. '.self::checkText($invokerid['client_nickname'], 15). ' - Kanał',
- 'channel_flag_maxclients_unlimited' => 1,
- 'channel_flag_maxfamilyclients_unlimited' => 1,
- 'channel_maxclients' => 1,
- 'channel_maxfamilyclients' => 1,
- 'channel_password' => '12345'
- ]
- );
- $ts->moveClient($clid,$channelFound['cid']);
- $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'));
- $ts->setClientChannelGroup($channelFound['cid'],self::$config['channel_admin_group_id'], $invokerid['client_database_id']);
- if (self::$config['max_subchannels'] > 0) {
- for ($i = 1; $i <= self::$config['max_subchannels']; $i++) {
- $ts->createChannel(
- [
- 'channel_flag_semi_permanent' => 0,
- 'channel_flag_permanent' => 1,
- 'channel_name' => $i . '. ' . $lang->getLanguage('CH_UPDATE_DEFAULT_NAME'),
- 'channel_description' => $lang->langReplace(array('[ID]','[NICK]'),array($i, $invokerid['client_nickname']),'CH_SUB_DESC'),
- 'cpid' => $channelFound['cid'],
- 'channel_codec' => self::$config['channel_codec'],
- 'channel_codec_quality' => self::$config['channel_codec_level'],
- 'channel_password' => '12345'
- ]
- );
- }
- }
- unset($channelFound);
- }else{
- $ts->pokeClient($clid, 'Nie znaleziono wolnych kanałów!');
- $ts->kickClient($clid, 'Nie znaleziono wolnych kanałów!', 'channel');
- }
- }
- }else{
- $channelInfo = $ts->getElement($ts->getChannelInfo($found_c), 'data');
- list($number, $name) = explode(".", $channelInfo['channel_name'], 2);
- $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'));
- $ts->moveClient($clid, $found_c);
- }
- }else{
- $ts->pokeClient($clid, 'Aby otrzymać kanał najpierw się zarejestruj');
- $ts->kickClient($clid, 'Aby otrzymać kanał najpierw się zarejestruj', 'channel');
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement