diff --git a/plugins/gofon/phoneaccount/class_phoneAccount.inc b/plugins/gofon/phoneaccount/class_phoneAccount.inc
index 73b6d9db229f3fcbdf2304b077474d37d3a2355c..db58e20bcf781c744a770222ebd82714c645cdb2 100644 (file)
*/
// Connect to DB server
if((isset($a_SETUP))&&(isset($a_SETUP['SERVER']))&&(isset($a_SETUP['LOGIN']))&&(isset($a_SETUP['PASSWORD']))){
- $r_con = @mysql_connect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
+ $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
if($r_con){
$r_db = @mysql_select_db($a_SETUP['DB'],$r_con);
$vp = mysql_fetch_row(mysql_query("SELECT ".$a_SETUP['VOICE_TABLE'].".password FROM ".$a_SETUP['VOICE_TABLE'].", ".$a_SETUP['SIP_TABLE']." WHERE customer_id = sip_users.mailbox AND name='".$this->uid."'"));
}
}
}
+ @mysql_close($r_con) ;
}
// Generate MySQL Syntax
function generate_mysql_entension_entries($save = false){
+ if(!isset($_SESSION['config']->data['SERVERS']['FON'])){
+ print_red(_("There is currently no asterisk server defined. Possibly you are missing a server that handles the asterisk management (goFonServer).\nYour Settings can't be saved to asterisk Database."));
+ return(true);
+ }
+
// Get Configuration for Mysql database Server
$a_SETUP = $_SESSION['config']->data['SERVERS']['FON']; // DB Configuration
$s_parameter = ""; // Contains paramter for selected Macro
// Connect to DB server
- $r_con = @mysql_connect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
+ $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
// Check if we are connected correctly
if(!$r_con){
$SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$this->uid."';\n";
$SQL[] = "DELETE FROM ".$a_SETUP['SIP_TABLE']." WHERE name='".$this->uid."';\n";
$SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$this->phoneNumbers[$i_new_key].";";
+ // Delete old entries
+ $b_first_deleted =false;
+ foreach($this->a_old_telenums as $s_telenums){
+ $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
+ if(!$b_first_deleted){
+ $b_first_deleted=true;
+ $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$s_telenums.";";
+ }
+ }
+
+
+ if($this->goFonHardware=="automatic"){
+ foreach($SQL as $query ){
+ mysql_query($query) ;
+ }
+ return;
+ }
// Generate Strings with keys and values
foreach($sip_entry as $s_sip_key=>$s_sip_val){
// Append SIP Entry
$SQL[] ="INSERT INTO ".$a_SETUP['SIP_TABLE']." (".$s_sip_keys.") VALUES (".$s_sip_values.");";
- // Delete old entries
- $b_first_deleted =false;
- foreach($this->a_old_telenums as $s_telenums){
- $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
- if(!$b_first_deleted){
- $b_first_deleted=true;
- $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$s_telenums.";";
- }
- }
-
/* If deletion starts from userslist, cn uid are not set */
if((isset($this->parent->by_object['user']->uid))&&(!empty($this->parent->by_object['user']->uid))){
$this->uid = $this->parent->by_object['user']->uid;
$i_is_accounted=false;
$i = 0;
-
+
+ $is_inserted_once = false;
+
// Entension entries Hint / Dial / Goto
foreach($this->phoneNumbers as $s_telenums){
- /* Mapping : Name TO Number*/
- $EXT[$i]['context'] = 'GOsa';
- $EXT[$i]['exten'] = $this->uid;
- $EXT[$i]['priority']= 1;
- $EXT[$i]['app'] = "Goto";
- $EXT[$i]['appdata'] = $s_telenums."|1";
- $i ++;
+ if(!$is_inserted_once){
+ $is_inserted_once = true;
+ $EXT[$i]['context'] = 'GOsa';
+ $EXT[$i]['exten'] = $this->uid;
+ $EXT[$i]['priority']= 1;
+ $EXT[$i]['app'] = "Goto";
+ $EXT[$i]['appdata'] = $s_telenums."|1";
+ $i ++;
+ }
/* Hint Entry */
$EXT[$i]['context'] = 'GOsa';
$EXT[$i]['exten'] = $s_telenums;
$EXT[$i]['app'] = 'SIP/'.$this->uid;
$i ++;
/* SetCID */
- $EXT[$i]['context'] = 'GOsa';
- $EXT[$i]['exten'] = $s_telenums;
- $EXT[$i]['priority']= 1;
- $EXT[$i]['app'] = "SetCIDName";
- $EXT[$i]['appdata'] = $CNname;
- $i ++;
+ //$EXT[$i]['context'] = 'GOsa';
+ //$EXT[$i]['exten'] = $s_telenums;
+ //$EXT[$i]['priority']= 1;
+ //$EXT[$i]['app'] = "SetCIDName";
+ //$EXT[$i]['appdata'] = $CNname;
+ //$i ++;
// If no macro is selected use Dial
if($this->macro!="none"){
$s_par = $macroname."|".$s_parameter;
}else{
$s_app = "Dial";
- $s_par = 'SIP/'.$this->uid;
+ $s_par = 'SIP/'.$this->uid."|20|r";
}
$EXT[$i]['context'] = 'GOsa';
$EXT[$i]['exten'] = $s_telenums;
- $EXT[$i]['priority']= 2;
+ $EXT[$i]['priority']= 1;
$EXT[$i]['app'] = $s_app;
$EXT[$i]['appdata'] = $s_par;
$i ++;
}
}
}
+ @mysql_close($r_con);
return true;
}
function execute()
{
+ $display = "";
+
+ if(empty($this->macro)&&(!empty($this->goFonMacro))){
+
+ /* Go through already saved values, for a parameter */
+ $tmp = split("!",$this->goFonMacro);
+
+ /* it is possible that nothing has been saved yet */
+ if(is_array($tmp)){
+
+ /* First value is the macroname */
+ $this->macro = $tmp[0];
+
+ /* Macroname saved, delete that index */
+ unset($tmp[0]);
+
+ /* Check if makro has been removed */
+ if(!isset($this->macroarray[$this->macro])){
+ $this->macrostillavailable = false;
+ }else{
+ $this->macrostillavailable = true;
+ }
+
+ /* for each parametervalues ( parameterID#value like 25#twentyfive) */
+ foreach($tmp as $var){
+
+ /* Split this, so we have $varar[0] = parameterID $varar[1] = SelectedValue */
+ $varar = split("#",$var);
+
+ /* Only insert if the parameter still exists */
+ if(isset($this->macroarray[$this->macro][$varar[0]])){
+ /* Assign value */
+ $this->macroarray[$this->macro][$varar[0]]['choosen']=$varar[1];
+ }
+ }
+ }
+ }
+
/* Do we represent a valid account? */
if (!$this->is_account && $this->parent == NULL){
$display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\"> <b>".
$this->macro ="none";
}
+ /* Prepare templating */
+ $smarty= get_smarty();
+
/* tell user that the pluging selected is no longer available*/
if((!$this->macrostillavailable)&&($this->macro!="none")){
print_red(_("The macro you selected, is no longer available for you, please choose another one."));
}
- /* Prepare templating */
- $smarty= get_smarty();
-
/* Assing macroselectbox values */
$smarty->assign("macros",$this->macros);
$smarty->assign("macro", $this->macro);
+ /* check if there is a FON server created */
+ if(!isset($_SESSION['config']->data['SERVERS']['FON'])){
+ print_red(_("There is currently no asterisk server defined. Possibly you are missing a server that handles the asterisk management (goFonServer).\nYour Settings can't be saved to asterisk Database."));
+ }
+
/* Create parameter table, skip if no parameters given */
if(!isset($this->macroarray[$this->macro])){
$macrotab="";
$message[]=(_("Voicemail PIN must be between 1-4 characters."));
}else{
if(preg_match("/[^0-9]/",$this->goFonVoicemailPIN)){
- $message[]=(_("The specified oicemail PIN contains invalid characters, only numeric values are allowed here."));
+ $message[]=(_("The specified Voicemail PIN contains invalid characters, only numeric values are allowed here."));
}
}
show_ldap_error($ldap->get_error());
/* Optionally execute a command after we're done */
+ @mysql_close($r_con);
$this->handle_post_events('remove');
}