X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fgofon%2Fphoneaccount%2Fclass_phoneAccount.inc;h=0cf7ac03a6684df4a90025ec05e5a1f02382b3cc;hb=9ba37d0ddd9297f3eded1e12d899e939d9f15555;hp=031dea731972a59c43119d9fc67dd42f7ddc69e8;hpb=bb6ed01cdc79608e0d001eb4c466c5b6dd87880e;p=gosa.git diff --git a/plugins/gofon/phoneaccount/class_phoneAccount.inc b/plugins/gofon/phoneaccount/class_phoneAccount.inc index 031dea731..0cf7ac03a 100644 --- a/plugins/gofon/phoneaccount/class_phoneAccount.inc +++ b/plugins/gofon/phoneaccount/class_phoneAccount.inc @@ -8,7 +8,7 @@ class phoneAccount extends plugin var $has_mailAccount= FALSE; /* Attributes */ - var $telephoneNumber = ""; + var $telephoneNumber = array(); var $goFonHardware = ""; var $goFonFormat = ""; var $goFonPIN = ""; @@ -34,13 +34,18 @@ class phoneAccount extends plugin var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); /* attribute list for save action */ - var $attributes = array("goFonDeliveryMode", "goFonFormat","uid","cn","mail", + var $CopyPasteVars = array("phoneNumbers","macroarray","macrostillavailable"/*"phoneNumbers" -Reset- */, + "hardware_list","used_hardware"); + + var $attributes = array("goFonDeliveryMode", "goFonFormat","uid","cn", "goFonHardware","goFonPIN","goFonVoicemailPIN","telephoneNumber", "goFonMacro","macro"); var $objectclasses= array("goFonAccount"); - function phoneAccount ($config, $dn= NULL) + var $uid; + + function phoneAccount ($config, $dn= NULL, $parent= NULL) { - plugin::plugin ($config, $dn); + plugin::plugin ($config, $dn, $parent); /* Set phone hardware */ if (!isset($this->attrs['goFonHardware'])){ @@ -267,7 +272,7 @@ class phoneAccount extends plugin $s_ip = NULL; // Contains ip for Sip entry $s_host = NULL; // Contains host for Sip entry - $s_qualify = NULL; // Qualify entry + $s_qualify = "yes"; // Qualify entry $s_pin = NULL; // Entry for secret $s_type = NULL; // Entry for phone type (friend , peer ..) @@ -284,7 +289,7 @@ class phoneAccount extends plugin $b_first_deleted= false; // Only delete first entry, $s_telenums = ""; // for each value variable - $i_is_accounted =false; // Ensure that extension entry, for name to number is only once in table + $i_is_accounted = false; // Ensure that extension entry, for name to number is only once in table // Connect to DB server @@ -433,14 +438,15 @@ class phoneAccount extends plugin $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$newnums[$i_new_key].";"; // Delete old entries $b_first_deleted =false; - foreach($oldnums 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(isset($oldnums) && is_array($oldnums)){ + foreach($oldnums 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) ; @@ -697,7 +703,7 @@ class phoneAccount extends plugin switch ($type){ case "combo": - $str= "acl, "goFonMacro")." >"; foreach(split(":",$default) as $choice){ if($choosen==$choice){ $str.= "\n"; @@ -792,7 +798,7 @@ class phoneAccount extends plugin /* Fill arrays */ $smarty->assign ("goFonHardware", $this->goFonHardware); if (!count($this->phoneNumbers)){ - $smarty->assign ("phoneNumbers", array("")); + $smarty->assign ("phoneNumbers", array()); } else { $smarty->assign ("phoneNumbers", $this->phoneNumbers); } @@ -879,8 +885,8 @@ class phoneAccount extends plugin function check() { - /* Reset message array */ - $message= array(); + /* Call common method to give check the hook */ + $message= plugin::check(); if((strlen($this->goFonVoicemailPIN)==0)||(strlen($this->goFonVoicemailPIN)>4)){ $message[]=(_("Voicemail PIN must be between 1-4 characters.")); @@ -890,11 +896,11 @@ class phoneAccount extends plugin } } - if((strlen($this->goFonPIN)!=4)){ - $message[]=(_("Phone PIN must be 4 characters long.")); + if((strlen($this->goFonPIN)<=0)){ + $message[]=(_("Phone PIN must be at least one character long.")); }else{ - if(preg_match("/[^0-9]/",$this->goFonPIN)){ - $message[]=(_("The specified phone PIN contains invalid characters, only numeric values are allowed here.")); + if(preg_match("/[^0-9a-z]/i",$this->goFonPIN)){ + $message[]=(_("The specified phone PIN contains invalid characters, only aphanumeric values are allowed here.")); } } @@ -956,17 +962,19 @@ class phoneAccount extends plugin /* Write back to ldap */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); - $ldap->modify($this->attrs); - show_ldap_error($ldap->get_error()); + $this->cleanup(); + $ldap->modify ($this->attrs); + + show_ldap_error($ldap->get_error(), _("Saving phone account failed")); /* Optionally execute a command after we're done */ if ($this->initially_was_account == $this->is_account){ if ($this->is_modified){ - $this->handle_post_events("modify"); + $this->handle_post_events("modify",array("uid" => $this->uid)); } } else { - $this->handle_post_events("add"); + $this->handle_post_events("add",array("uid" => $this->uid)); } } @@ -1010,17 +1018,18 @@ class phoneAccount extends plugin function remove_from_parent() { - + if(!$this->initially_was_account) return; + foreach($this->attributes as $key=>$val){ - if(in_array($val,array("uid","cn","mail"))){ + if(in_array($val,array("uid","cn"))){ unset($this->attributes[$key]); unset($this->$val); } } - if(array_key_exists('config', $_SESSION) && array_key_exists('SERVERS', $_SESSION['config']->data) && - array_key_exists('FON', $_SESSION['config']->data['SERVERS'])) { + array_key_exists('FON', $_SESSION['config']->data['SERVERS']) && + is_callable("mysql_pconnect")) { // Get Configuration for Mysql database Server $a_SETUP = $_SESSION['config']->data['SERVERS']['FON']; $s_parameter =""; @@ -1030,8 +1039,8 @@ class phoneAccount extends plugin // 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']); + print_red(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; } @@ -1041,7 +1050,7 @@ class phoneAccount extends plugin // 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']); + print_red(sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER'])); gosa_log(@mysql_error()); return false; } @@ -1070,16 +1079,17 @@ class phoneAccount extends plugin $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; } } + }else{ + print_red(_("Can't remove phone account, the mysql extension is not present in php configuration.")); + return false; } - /* unset macro attr, it will cause an error */ $tmp = array_flip($this->attributes); unset($tmp['macro']); @@ -1099,6 +1109,7 @@ class phoneAccount extends plugin $this->attrs['telephoneNumber']= array(); } + $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(objectClass=goFonQueue)", array("member")); @@ -1112,12 +1123,14 @@ class phoneAccount extends plugin } } $ldap->cd($this->dn); - $ldap->modify($this->attrs); - show_ldap_error($ldap->get_error()); + $this->cleanup(); + $ldap->modify ($this->attrs); + + show_ldap_error($ldap->get_error(), _("Removing phone account failed")); /* Optionally execute a command after we're done */ @mysql_close($r_con); - $this->handle_post_events('remove'); + $this->handle_post_events('remove',array("uid"=> $this->uid)); } @@ -1149,6 +1162,41 @@ class phoneAccount extends plugin } } } + + + /* Create phoneAccount part of copy & paste dialog */ + function getCopyDialog() + { + if(!$this->is_account) return(""); + $smarty = get_smarty(); + if (!count($this->phoneNumbers)){ + $smarty->assign ("phoneNumbers", array("")); + } else { + $smarty->assign ("phoneNumbers", $this->phoneNumbers); + } + + $smarty->assign("goFonVoicemailPIN",$this->goFonVoicemailPIN); + $smarty->assign("goFonPIN",$this->goFonPIN); + + $display= $smarty->fetch(get_template_path('paste_generic.tpl', TRUE, dirname(__FILE__))); + $ret =array(); + $ret['string'] = $display; + $ret['status'] = ""; + return($ret); + } + + /* Save posts from copy & paste dialog dialog */ + function saveCopyDialog() + { + if(!$this->is_account) return; + $this->execute(); + if(isset($_POST['goFonVoicemailPIN'])) { + $this->goFonVoicemailPIN = $_POST['goFonVoicemailPIN']; + } + if(isset($_POST['goFonPIN'])){ + $this->goFonPIN = $_POST['goFonPIN']; + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: