📄 functions.inc.php
字号:
//script to write iax2 conf file from mysql //$wScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_iax_conf_from_mysql.pl'; //exec($wScript); //script to write op_server.cfg file from mysql //$wOpScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_op_conf_from_mysql.pl'; //exec($wOpScript);}function core_devices_deliax2($account) { global $db; global $currentFile; $sql = "DELETE FROM iax WHERE id = '$account'"; $result = $db->query($sql); if(DB::IsError($result)) { die($result->getMessage().$sql); } //script to write iax2 conf file from mysql //$wScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_iax_conf_from_mysql.pl'; //exec($wScript); //script to write op_server.cfg file from mysql //$wOpScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_op_conf_from_mysql.pl'; //exec($wOpScript);}function core_devices_getiax2($account) { global $db; $sql = "SELECT keyword,data FROM iax WHERE id = '$account'"; $results = $db->getAssoc($sql); if(DB::IsError($results)) { $results = null; } return $results;}function core_devices_addzap($account) { global $db; global $currentFile; $zapfields = array( array($account,'account',$account), array($account,'context',($_REQUEST['context'])?$_REQUEST['context']:'from-internal'), array($account,'mailbox',($_REQUEST['mailbox'])?$_REQUEST['mailbox']:$account.'@device'), array($account,'callerid',($_REQUEST['description'])?$_REQUEST['description']." <".$account.'>':'device'." <".$account.'>'), array($account,'signalling',($_REQUEST['signalling'])?$_REQUEST['signalling']:'fxo_ks'), array($account,'echocancel',($_REQUEST['echocancel'])?$_REQUEST['echocancel']:'yes'), array($account,'echocancelwhenbridged',($_REQUEST['echocancelwhenbridged'])?$_REQUEST['echocancelwhenbridged']:'no'), array($account,'echotraining',($_REQUEST['echotraining'])?$_REQUEST['echotraining']:'800'), array($account,'busydetect',($_REQUEST['busydetect'])?$_REQUEST['busydetect']:'no'), array($account,'busycount',($_REQUEST['busycount'])?$_REQUEST['busycount']:'7'), array($account,'callprogress',($_REQUEST['callprogress'])?$_REQUEST['callprogress']:'no'), array($account,'record_in',($_REQUEST['record_in'])?$_REQUEST['record_in']:'On-Demand'), array($account,'record_out',($_REQUEST['record_out'])?$_REQUEST['record_out']:'On-Demand'), array($account,'accountcode',(isset($_REQUEST['accountcode']))?$_REQUEST['accountcode']:''), array($account,'channel',($_REQUEST['channel'])?$_REQUEST['channel']:'')); $compiled = $db->prepare('INSERT INTO zap (id, keyword, data) values (?,?,?)'); $result = $db->executeMultiple($compiled,$zapfields); if(DB::IsError($result)) { die($result->getMessage()."<br><br>error adding to ZAP table"); } //script to write zap conf file from mysql //$wScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_zap_conf_from_mysql.pl'; //exec($wScript); //script to write op_server.cfg file from mysql //$wOpScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_op_conf_from_mysql.pl'; //exec($wOpScript);}function core_devices_delzap($account) { global $db; global $currentFile; $sql = "DELETE FROM zap WHERE id = '$account'"; $result = $db->query($sql); if(DB::IsError($result)) { die($result->getMessage().$sql); } //script to write zap conf file from mysql //$wScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_zap_conf_from_mysql.pl'; //exec($wScript); //script to write op_server.cfg file from mysql //$wOpScript = rtrim($_SERVER['SCRIPT_FILENAME'],$currentFile).'retrieve_op_conf_from_mysql.pl'; //exec($wOpScript);}function core_devices_getzap($account) { global $db; $sql = "SELECT keyword,data FROM zap WHERE id = '$account'"; $results = $db->getAssoc($sql); if(DB::IsError($results)) { $results = null; } return $results;}/* end page.devices.php functions */function core_hint_get($account){ //determine what devices this user is associated with $sql = "SELECT dial from devices where user = '{$account}'"; $results = sql($sql,"getAll",DB_FETCHMODE_ASSOC); //print_r($results); //create an array of strings if (is_array($results)){ foreach ($results as $result) { $dial[] = $result['dial']; } } //create a string with & delimiter if (isset($dial) && is_array($dial)){ $hint = implode($dial,"&"); } else { if (isset($results[0]['dial'])) { $hint = $results[0]['dial']; } else { $hint = null; } } return $hint;}/* begin page.users.php functions */// get the existing extensions// the returned arrays contain [0]:extension [1]:namefunction core_users_list() { $results = sql("SELECT extension,name,voicemail FROM users ORDER BY extension","getAll"); //only allow extensions that are within administrator's allowed range foreach($results as $result){ if (checkRange($result[0])){ $extens[] = array($result[0],$result[1]); } } if (isset($extens)) { sort($extens); return $extens; } else { return null; }}function core_users_add($vars,$vmcontext) { extract($vars); global $db; global $amp_conf; //ensure this id is not already in use $extens = core_users_list(); if(is_array($extens)) { foreach($extens as $exten) { if ($exten===$extension) { echo "<script>javascript:alert('"._("This user {$thisexten}/{$extension} extension is already in use")."');</script>"; return false; } } } //build the recording variable $recording = "out=".$record_out."|in=".$record_in; //escape quotes and any other bad chars: if(!get_magic_quotes_gpc()) { $outboundcid = addslashes($outboundcid); $name = addslashes($name); } //if voicemail is enabled, set the box@context to use if(isset($vm) && $vm == "enabled") { $voicemail = $vmcontext; } else { $voicemail = "disabled"; } // MODIFICATION: (PL) // Added for directdid and didalert l for Alert Info distinctive ring) // // cleanup any non dial pattern characters prior to inserting into the database // then add directdid to the insert command. // $directdid = preg_replace("/[^0-9._XxNnZz\[\]\-]/" ,"", trim($directdid)); //insert into users table $sql="INSERT INTO users (extension,password,name,voicemail,ringtimer,noanswer,recording,outboundcid,directdid,didalert) values (\""; $sql.= "$extension\", \""; $sql.= isset($password)?$password:''; $sql.= "\", \""; $sql.= isset($name)?$name:''; $sql.= "\", \""; $sql.= isset($voicemail)?$voicemail:'default'; $sql.= "\", \""; $sql.= isset($ringtimer)?$ringtimer:''; $sql.= "\", \""; $sql.= isset($noanswer)?$noanswer:''; $sql.= "\", \""; $sql.= isset($recording)?$recording:''; $sql.= "\", \""; $sql.= isset($outboundcid)?$outboundcid:''; $sql.= "\", \""; $sql.= isset($directdid)?$directdid:''; $sql.= "\", \""; $sql.= isset($didalert)?$didalert:''; $sql.= "\")"; sql($sql); //write to astdb $astman = new AGI_AsteriskManager(); if ($res = $astman->connect("127.0.0.1", $amp_conf["AMPMGRUSER"] , $amp_conf["AMPMGRPASS"])) { $astman->database_put("AMPUSER",$extension."/password",isset($password)?$password:''); $astman->database_put("AMPUSER",$extension."/ringtimer",isset($ringtimer)?$ringtimer:''); $astman->database_put("AMPUSER",$extension."/noanswer",isset($noanswer)?$noanswer:''); $astman->database_put("AMPUSER",$extension."/recording",isset($recording)?$recording:''); $astman->database_put("AMPUSER",$extension."/outboundcid",isset($outboundcid)?"\"".$outboundcid."\"":''); $astman->database_put("AMPUSER",$extension."/cidname",isset($name)?"\"".$name."\"":''); $astman->database_put("AMPUSER",$extension."/voicemail","\"".isset($voicemail)?$voicemail:''."\""); $astman->database_put("AMPUSER",$extension."/device","\"".isset($device)?$device:''."\""); if (isset($amp_conf['ENABLECW']) && $amp_conf['ENABLECW'] == "yes") { $astman->database_put("CW",$extension,"\"ENABLED\""); } $astman->disconnect(); } else { fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); } /* //write to extensions table - AMP2 will not do this //update ext-local context in extensions.conf //warning: as of 009 we aren't allowing a user to use any mailbox but their own //This may affect some upgraders as it is possible in previous versions! //$mailb = ($vm == 'disabled' || $mailbox == '') ? 'novm' : $mailbox; $mailb = ($vm == 'disabled') ? 'novm' : $extension; addaccount($extension,$mailb);*/ /*core_hint_add($extension);*/ //take care of voicemail.conf if using voicemail $uservm = getVoicemail(); unset($uservm[$incontext][$account]); if ($vm != 'disabled') { // need to check if there are any options entered in the text field if ($_REQUEST['options']!=''){ $options = explode("|",$_REQUEST['options']); foreach($options as $option) { $vmoption = explode("=",$option); $vmoptions[$vmoption[0]] = $vmoption[1]; } } $vmoption = explode("=",$attach); $vmoptions[$vmoption[0]] = $vmoption[1]; $vmoption = explode("=",$saycid); $vmoptions[$vmoption[0]] = $vmoption[1]; $vmoption = explode("=",$envelope); $vmoptions[$vmoption[0]] = $vmoption[1]; $vmoption = explode("=",$delete); $vmoptions[$vmoption[0]] = $vmoption[1]; $uservm[$vmcontext][$extension] = array( 'mailbox' => $extension, 'pwd' => $vmpwd, 'name' => $name, 'email' => $email, 'pager' => $pager, 'options' => $vmoptions); } saveVoicemail($uservm);}function core_users_get($extension){ global $db; //get all the variables for the meetme $sql = "SELECT * FROM users WHERE extension = '$extension'"; $results = $db->getRow($sql,DB_FETCHMODE_ASSOC); if(DB::IsError($results)) { die($results->getMessage().$sql); } //explode recording vars $recording = explode("|",$results['recording']); $recout = substr($recording[0],4); $recin = substr($recording[1],3); $results['record_in']=$recin; $results['record_out']=$recout; return $results;}function core_users_del($extension,$incontext,$uservm){ global $db; global $amp_conf; //delete from devices table $sql="DELETE FROM users WHERE extension = \"$extension\""; $results = $db->query($sql); if(DB::IsError($results)) { die($results->getMessage().$sql); } //delete details to astdb $astman = new AGI_AsteriskManager(); if ($res = $astman->connect("127.0.0.1", $amp_conf["AMPMGRUSER"] , $amp_conf["AMPMGRPASS"])) { $astman->database_del("AMPUSER",$extension."/password"); $astman->database_del("AMPUSER",$extension."/ringtimer"); $astman->database_del("AMPUSER",$extension."/noanswer"); $astman->database_del("AMPUSER",$extension."/recording"); $astman->database_del("AMPUSER",$extension."/outboundcid"); $astman->database_del("AMPUSER",$extension."/cidname"); $astman->database_del("AMPUSER",$extension."/voicemail"); $astman->database_del("AMPUSER",$extension."/device"); $astman->disconnect(); } else { fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); } //take care of voicemail.conf unset($uservm[$incontext][$extension]); saveVoicemail($uservm); /* //delete the extension info from extensions table delextensions('ext-local',$extension); */ /*//delete hint core_hint_del($extension);*/}function core_users_cleanastdb($extension) { // This is called to remove any ASTDB traces of the user after a deletion. Otherwise, // call forwarding, call waiting settings could hang around and bite someone if they // recycle an extension. Is called from page.xtns and page.users. global $amp_conf; $astman = new AGI_AsteriskManager(); if ($res = $astman->connect("127.0.0.1", $amp_conf["AMPMGRUSER"] , $amp_conf["AMPMGRPASS"])) { $astman->database_del("CW",$extension); $astman->database_del("CF",$extension); $astman->database_del("CFB",$extension); $astman->database_del("CFU",$extension); } else { fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); }}function core_users_edit($extension,$vars,$vmcontext,$incontext,$uservm){ global $db; global $amp_conf; //I we are editing, we need to remember existing user<->device mapping, so we can delete and re-add $astman = new AGI_AsteriskManager(); if ($res = $astman->connect("127.0.0.1", $amp_conf["AMPMGRUSER"] , $amp_conf["AMPMGRPASS"])) { $ud = $astman->database_get("AMPUSER",$extension."/device"); $vars['device'] = $ud; } else { fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); } //delete and re-add core_users_del($extension,$incontext,$uservm); core_users_add($vars,$vmcontext); }function core_directdid_list(){ $sql = "SELECT extension, directdid, didalert FROM users WHERE directdid IS NOT NULL AND directdid != ''"; return sql($sql,"getAll",DB_FETCHMODE_ASSOC);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -