diff --git a/plugins/gofon/phoneaccount/class_phoneAccount.inc b/plugins/gofon/phoneaccount/class_phoneAccount.inc
index 814d890268a70951b60b7566e3ba5d17e02c54a9..db58e20bcf781c744a770222ebd82714c645cdb2 100644 (file)
}
}
- $a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
- $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
- if(!$r_con){
- $this->generate_error = sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
+ $a_SETUP= array();
+ if(array_key_exists('config',$_SESSION) &&
+ array_key_exists('SERVERS',$_SESSION['config']->data) &&
+ array_key_exists('FON',$_SESSION['config']->data['SERVERS'])) {
+ $a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
+ $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
+ if(!$r_con){
+ $this->generate_error = sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
$a_SETUP['SERVER'],$a_SETUP['LOGIN']);
- gosa_log(mysql_error());
- return false;
- }
- $db = @mysql_select_db($a_SETUP['DB'],$r_con);
- if(!$db){
- $this->generate_error = sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']);
- gosa_log(mysql_error());
- return false;
- }
+ gosa_log(mysql_error());
+ return false;
+ }
+ $db = @mysql_select_db($a_SETUP['DB'],$r_con);
+ if(!$db){
+ $this->generate_error = sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']);
+ gosa_log(mysql_error());
+ return false;
+ }
- $first = false;
- foreach($this->phoneNumbers as $key => $val){
- if(!$first){
- $first = $key;
+ $first = false;
+ foreach($this->phoneNumbers as $key => $val){
+ if(!$first){
+ $first = $key;
+ }
}
}
$this->is_modified = true;
}
+
+ /* Get voicemail PIN from MySQL DB
+ * Because every user can change his PIN directly from the phone
+ * without any update to the ldap
+ * This means, the PIN in the DB is up to date
+ */
+ // Connect to DB server
+ if((isset($a_SETUP))&&(isset($a_SETUP['SERVER']))&&(isset($a_SETUP['LOGIN']))&&(isset($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."'"));
+
+ if((isset($vp[0]))&&(!empty($vp[0]))){
+ $this->goFonPINVoice = $vp[0];
+ }
+ }
+ }
+ @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."));
}
}
}
}
- // Get Configuration for Mysql database Server
- $a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
- $s_parameter ="";
-
- // Connect to DB server
- $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
-
- // Check if we are connected correctly
- if(!$r_con){
- $this->generate_error = sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
- $a_SETUP['SERVER'],$a_SETUP['LOGIN']);
- gosa_log(@mysql_error());
- return false;
- }
+ if(array_key_exists('config', $_SESSION) &&
+ array_key_exists('SERVERS', $_SESSION['config']->data) &&
+ array_key_exists('FON', $_SESSION['config']->data['SERVERS'])) {
+ // Get Configuration for Mysql database Server
+ $a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
+ $s_parameter ="";
+
+ // Connect to DB server
+ $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']);
+
+ // Check if we are connected correctly
+ if(!$r_con){
+ $this->generate_error = sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
+ $a_SETUP['SERVER'],$a_SETUP['LOGIN']);
+ gosa_log(@mysql_error());
+ return false;
+ }
- // Select database for Extensions
- $db = @mysql_select_db($a_SETUP['DB'],$r_con);
+ // Select database for Extensions
+ $db = @mysql_select_db($a_SETUP['DB'],$r_con);
- // Test if we have the database selected correctly
- if(!$db){
- $this->generate_error = sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']);
- gosa_log(@mysql_error());
- return false;
- }
+ // Test if we have the database selected correctly
+ if(!$db){
+ $this->generate_error = sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']);
+ gosa_log(@mysql_error());
+ return false;
+ }
- $SQL="";
+ $SQL="";
- /* 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;
- }
+ /* 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;
+ }
- if((isset($this->parent->by_object['user']->cn))&&(!empty($this->parent->by_object['user']->cn))){
- $this->cn = $this->parent->by_object['user']->cn;
- }
+ if((isset($this->parent->by_object['user']->cn))&&(!empty($this->parent->by_object['user']->cn))){
+ $this->cn = $this->parent->by_object['user']->cn;
+ }
- $first_num = false;
- // Delete old entries
- foreach($this->a_old_telenums as $s_telenums){
- if(!$first_num){
- $first_num = $s_telenums;
+ $first_num = false;
+ // Delete old entries
+ foreach($this->a_old_telenums as $s_telenums){
+ if(!$first_num){
+ $first_num = $s_telenums;
+ }
+ $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
}
- $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
- }
- $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id='".$first_num."';";
- $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='".$first_num."';";
+ $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$this->uid."';\n";
+ $SQL[] = "DELETE FROM ".$a_SETUP['SIP_TABLE']." WHERE name='".$this->uid."';\n";
- foreach($SQL as $query){
- if(!@mysql_query($query,$r_con)){
- print_red(_("Stop".mysql_error()));
- return false;
+ foreach($SQL as $query){
+ if(!@mysql_query($query,$r_con)){
+ print_red(_("Stop".mysql_error()));
+ return false;
+ }
}
}
-
/* unset macro attr, it will cause an error */
$tmp = array_flip($this->attributes);
unset($tmp['macro']);
show_ldap_error($ldap->get_error());
/* Optionally execute a command after we're done */
+ @mysql_close($r_con);
$this->handle_post_events('remove');
}