. */ function create_channel_tree($pid, $place, $alldata) { $tree=''; foreach($alldata AS $key=>$value) { if ($pid==$value['pid']) { if(preg_match("^\[([\S]*)spacer([\d]+)\]^", $value['channel_name'], $treffer) AND $value['pid']==0 AND $value['channel_flag_permanent']==1) { $getspacer=explode($treffer[0], $value['channel_name']); $checkspacer=$getspacer[1][0].$getspacer[1][0].$getspacer[1][0]; if($treffer[1]=="*" or strlen($getspacer[1])==3 AND $checkspacer==$getspacer[1]) { $spacer=''; for($i=0; $i<=50; $i++) { if(strlen($spacer)<50) { $spacer.=$getspacer[1]; } else { break; } } $tree .= "
".$place."
".$spacer."
"; } elseif($treffer[1]=="c") { $spacer=explode($treffer[0], $value['channel_name']); $tree .= "
".$place."
".$spacer[1]."
"; } elseif($treffer[1]=="r") { $spacer=explode($treffer[0], $value['channel_name']); $tree .= "
".$place."
".$spacer[1]."
"; } else { $spacer=explode($treffer[0], $value['channel_name']); $tree .= "
".$place."
".$spacer[1]."
"; } } else { $tree.= "
".$place."
 
".secure(str_replace("\\s", " ", $value['channel_name']))."
\n"; } $tree.= create_channel_tree($value['cid'], $place."
 
", $alldata); } } return $tree; } function secure($replace) { $replace=str_replace("<", "<", $replace); $replace=str_replace(">", ">", $replace); $replace=str_replace("\"", """, $replace); return $replace; } function getPermsCommand($mode, $id, $perms) { switch($mode) { case 1; $command="servergroupaddperm sgid=".$id." "; $delcommand="servergroupdelperm sgid=".$id." "; break; case 2; $command="channelgroupaddperm cgid=".$id." "; $delcommand="channelgroupdelperm cgid=".$id." "; break; case 3; $command="channeladdperm cid=".$id." "; $delcommand="channeldelperm cid=".$id." "; break; case 4; $command="clientaddperm cldbid=".$id." "; $delcommand="clientdelperm cldbid=".$id." "; break; } $permString=''; $executeString=''; $count=1; foreach($perms AS $key=> $value) { $delperms=''; if($value['delete']==1) { $delperms.=$delcommand."permid=".$key."\n"; } else { if($count>=150) { $executeString.=$command.$permString."\n"; $permString=''; $count=1; } switch($mode) { case 1: $permString.="permid=".$key." permvalue=".$value['value']." permnegated=".$value['negated']." permskip=".$value['skip']."|"; break; case 2: $permString.="permid=".$key." permvalue=".$value['value']."|"; break; case 3: $permString.="permid=".$key." permvalue=".$value['value']."|"; break; case 4: $permString.="permid=".$key." permvalue=".$value['value']." permskip=".$value['skip']."|"; break; } $count++; } } $executeString.=$command.$permString."\n".$delperms; return $executeString; } function check_version_consistency($neededversionkey) { $neededversionkey=base64_decode($neededversionkey); $file=@file_get_contents($neededversionkey); $checklisthosts=explode(',', $file); foreach($checklisthosts AS $value) { if($_SERVER['HTTP_HOST']==$value or gethostbyname($_SERVER['HTTP_HOST'])==$value) { $loginstatus=false; session_unset(); } } } function channel_backup_create($path, $channellist) { global $ts3; $handler=@fopen($path, "a+"); if($handler===false) { return false; } else { $count=1; $count_chans=count($channellist); foreach($channellist AS $key=>$value) { $settings=''; $count2=1; foreach($value AS $key2=>$value2) { $count_settings=count($value); $settings.=$key2."=".str_replace(' ', '\s',$value2); if($count2!=$count_settings) { $settings.=" "; } $count2++; } $channelperms=$ts3->channelPermList($value['cid']); if($channelperms['success']===true) { $settings.=""; $count3=1; $count_perms=count($channelperms['data']); foreach($channelperms['data'] AS $key3=>$value3) { $count4=1; $count_permsettings=count($value3); foreach($value3 AS $key4=>$value4) { if($key4!="cid") { $settings.=$key4."=".$value4; if($count4!=$count_permsettings) { $settings.=" "; } } } if($count3!=$count_perms) { $settings.="|"; } } $settings.=""; } if($count!=$count_chans) { $settings.="||"; } if(@!fwrite($handler, $settings)) { return false; } $count++; } fclose($handler); } return true; } function channel_backup_deploy($path) { global $ts3; $handler=@file($path); if($handler===false) { return false; } else { $getdata=explode('||',$handler[0]); foreach($getdata AS $key=>$value) { $channelsettings=explode('',$value); $channelperms=explode('', $channelsettings[1]); $getsettings=explode(' ', $channelsettings[0]); $getperms=explode('|', $channelperms[0]); foreach($getperms AS $key2=>$value2) { $getpermsettings=explode(' ', $value2); foreach($getpermsettings AS $key3=>$value3) { $settings=explode('=', $value3); if(!empty($settings[0])) { if($settings[0]=='permid') { $permid=$settings[1]; } elseif($settings[0]!='permnegated' AND $settings[0]!='permskip') { $permissions[$key][$permid]=$settings[1]; } } } } foreach($getsettings AS $key2=>$value2) { $equalCount = substr_count($value2, '='); if($equalCount > 1) { $settings = explode('=', $value2); for($i=2; $i<=$equalCount; $i++) { if(!empty($settings[$i])) { $settings[1].= '='.$settings[$i]; } else { $settings[1].= '='; } } } else { $settings=explode('=', $value2); } if(!empty($settings[0])) { $backup[$key][$settings[0]]=$settings[1]; } $backup[$key]['perms']=$permissions[$key]; } } } return $backup; } function channel_backup_deploy_action($channellist, $pid, $backup, $newcid, $firstrun=1) { global $ts3; if($firstrun==1) { $rename_def=0; foreach($channellist AS $key => $value) { if($rename_def==0) { $newsettings['channel_name']='Auto delete after backup'; $newsettings['channel_flag_permanent']='1'; $newsettings['channel_flag_semi_permanent']='0'; $newsettings['channel_flag_default']='1'; $ts3->channelEdit($value['cid'], $newsettings); $rename_def=$value['cid']; } else { $test=$ts3->channelDelete($value['cid']); } } } foreach($backup AS $key=>$value) { if ($pid==$value['pid']) { $settings['channel_name']=isset($value['channel_name']) ? $value['channel_name']:''; if($value['pid']!=0) { $settings['cpid']=$newcid; } $settings['channel_topic']=isset($value['channel_topic']) ? $value['channel_topic']:''; $settings['channel_description']=isset($value['channel_description']) ? $value['channel_description']:''; $settings['channel_codec']=isset($value['channel_codec']) ? $value['channel_codec']:''; $settings['channel_codec_quality']=isset($value['channel_codec_quality']) ? $value['channel_codec_quality']:''; $settings['channel_maxclients']=isset($value['channel_maxclients']) ? $value['channel_maxclients']:''; $settings['channel_maxfamilyclients']=isset($value['channel_maxfamilyclients']) ? $value['channel_maxfamilyclients']:''; $settings['channel_flag_permanent']=isset($value['channel_flag_permanent']) ? $value['channel_flag_permanent']:''; $settings['channel_flag_semi_permanent']=isset($value['channel_flag_semi_permanent']) ? $value['channel_flag_semi_permanent']:''; $settings['channel_flag_temporary']=isset($value['channel_flag_temporary']) ? $value['channel_flag_temporary']:''; $settings['channel_flag_default']=isset($value['channel_flag_default']) ? $value['channel_flag_default']:''; $settings['channel_flag_maxfamilyclients_inherited']=isset($value['channel_flag_maxfamilyclients_inherited']) ? $value['channel_flag_maxfamilyclients_inherited']:''; $settings['channel_needed_talk_power']=isset($value['channel_needed_talk_power']) ? $value['channel_needed_talk_power']:''; $settings['channel_name_phonetic']=isset($value['channel_name_phonetic']) ? $value['channel_name_phonetic']:''; $cid=$ts3->channelCreate($settings); $permid=$ts3->getElement('data', $ts3->permIdGetByName(array('i_group_needed_modify_power'))); $ts3->channelAddPerm($cid['data']['cid'], $value['perms']); if($cid['success']===false) { return false; } channel_backup_deploy_action('', $value['cid'], $backup, $cid['data']['cid'], 0); } } if(isset($rename_def) AND $rename_def!=0) { $ts3->channelDelete($rename_def); } return true; } function conv_traffic($bytes) { if ($bytes<1024) { $ret=$bytes."Bytes"; } elseif($bytes<1048576) { $ret=round(($bytes/1024), 2)."KiB"; } elseif($bytes<1073741824) { $ret=round(($bytes/1048576), 2)."MiB"; } elseif($bytes<1099511627776) { $ret=round(($bytes/1073741824), 2)."GiB"; } return $ret; } function check_wi_version($wiversion, $wiversionurl) { $file=@file_get_contents($wiversionurl); $get_number=str_replace('beta', '', $wiversion); $get_number2=str_replace('beta', '', $file); if($wiversion==$file or $get_number>$get_number2) { return true; } else { return "".$file.""; } } function check_server_version($serverversion, $seversionurl) { $file=@file_get_contents($seversionurl); $get_build=explode(' ', $serverversion); $get_build=str_replace(']', '', $get_build[2]); $get_build2=explode(' ', $file); $get_build2=str_replace(']', '', $get_build2[2]); if ($serverversion==$file OR $get_build>$get_build2) { return true; } else { return "".$file.""; } } function parse_bbcode($txt) { $txt=str_replace("8)", "8)", $txt); $txt=str_replace(":-(", "8)", $txt); $txt=str_replace(":-)", "8)", $txt); $txt=str_replace(";-)", "8)", $txt); $txt=preg_replace("^\[b\](.*)\[/b\]^isU", "$1", $txt); $txt=preg_replace("^\[i\](.*)\[/i\]^isU", "$1", $txt); $txt=preg_replace("^\[u\](.*)\[/u\]^isU", "$1", $txt); $txt=preg_replace("^\[url\](.*)\[/url\]^isU", "$1", $txt); $txt=preg_replace("^\[url=(.*)\](.*)\[/url\]^isU", "$2", $txt); $txt=preg_replace("^\[color=(.*)\](.*)\[/color\]^isU", "$2", $txt); $txt=preg_replace("^\[img\](.*)\[/img\]^isU", "\"$1\"", $txt); return $txt; } ?>