You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
| <?php
 | |
| require_once('config.inc.php');
 | |
| require_once($framework);
 | |
| 
 | |
| $exceptions = array_unique(array_merge($exceptions, $roots));
 | |
| 
 | |
| $server = TeamSpeak3::factory('serverquery://'.$user.':'.$passwd.'@'.$host.':'.$queryport.'/?server_port='.$voiceport);
 | |
| 
 | |
| foreach($roots as $root) {
 | |
| 	$root = $server->channelGetByName($root);
 | |
| 	$subs = $root->subChannelList();
 | |
| 	foreach($subs as $sub) {
 | |
| 		if(catchExceptions($sub['channel_name'], $exceptions)) {
 | |
| 			continue;
 | |
| 		}
 | |
| 
 | |
| 		$groups = $sub->subChannelList();
 | |
| 		$groupCount = count($groups);
 | |
| 	
 | |
| 		$i = 0;
 | |
| 		foreach($groups as $group) {
 | |
| 			if(catchExceptions($group['channel_name'], $exceptions)) {
 | |
| 				$groupCount--;
 | |
| 				continue;
 | |
| 			}
 | |
| 			$i++;
 | |
| 			if($i == $groupCount AND $delete == false) {
 | |
| 				$regex = '#([0-9]{1,3})#e';
 | |
| 				$replacement = '("$1" + 1)';
 | |
| 				$newName = preg_replace($regex, $replacement, $group['channel_name']);
 | |
| 				createChannel($server, $newName, $sub, $options);
 | |
| 			}
 | |
| 		}
 | |
| 		if($i == 0) {
 | |
| 			createChannel($server, $default, $sub, $options, array('channel_flag_permanent' => TRUE));
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| function createChannel($server, $name, $parent, $options, $addparam = array()) {
 | |
| 	$parameters = array(
 | |
| 		'channel_name' => $name, 
 | |
| 		'cpid' => $parent->getId()
 | |
| 	);
 | |
| 	$parameters = array_merge($parameters, $addparam);
 | |
| 	
 | |
| 	$id = $server->channelCreate($parameters);
 | |
| 	
 | |
| 	if($options['inherit_icons']) {
 | |
| 		$channel = $server->channelGetById($id);
 | |
| 		$channel->modify(array('channel_icon_id' => $parent->getProperty('channel_icon_id')));
 | |
| 	}
 | |
| }
 | |
| function catchExceptions($name, $excpetions) {
 | |
| 	foreach($excpetions as $exception) {
 | |
| 		if($name == $exception) {
 | |
| 			return true;
 | |
| 		}
 | |
| 	}
 | |
| 	return false;
 | |
| }
 |