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; }