X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fogroups%2Fclass_phonequeue.inc;h=d10c3c747a58281d89d7002026ed1af54647306b;hb=08f024d57211beef5886f6ddf6bf4afb2772cb4c;hp=96fbdf170027e37f002438fe51641631b04d50f2;hpb=66dd1e5863e1067a58b1efb08c8823efa96d8762;p=gosa.git diff --git a/plugins/admin/ogroups/class_phonequeue.inc b/plugins/admin/ogroups/class_phonequeue.inc index 96fbdf170..d10c3c747 100644 --- a/plugins/admin/ogroups/class_phonequeue.inc +++ b/plugins/admin/ogroups/class_phonequeue.inc @@ -34,11 +34,15 @@ class phonequeue extends plugin var $goFonDialOption =""; var $goFonQueueRetry =5; + var $goFonQueueStrategyOptions=array(); + var $goFonQueueStrategyOptionsR=array(); + + var $old_phone_numbers =array(); /* attribute list for save action */ var $attributes= array( "goFonTimeOut","goFonMaxLen","goFonAnnounceFrequency","goFonDialOption_t","goFonDialOption_T", - "goFonDialOption_h","goFonDialOption_r", + "goFonDialOption_h","goFonDialOption_r","cn", "goFonDialOption_H","goFonMusiconHold","goFonWelcomeMusic","goFonQueueReportHold","goFonQueueYouAreNext", "goFonQueueThereAre","goFonQueueCallsWaiting","goFonQueueThankYou","goFonQueueMinutes","goFonQueueSeconds","goFonQueueLessThan", "telephoneNumber","goFonQueueLanguage","goFonQueueStrategy","goFonQueueAnnounceHoldtime","goFonQueueAnnounce","goFonDialOption","goFonQueueRetry"); @@ -71,6 +75,25 @@ class phonequeue extends plugin $this->goFonQueueAnnounceHoldtime=false; } $this->old_phone_numbers = $this->telephoneNumber; + + $types= array('ringall' =>_("ring all"), + 'roundrobin' =>_("round robin"), + 'leastrecent'=>_("least recently called"), + 'fewestcalls'=>_("fewest completed calls"), + 'random' =>_("random"), + 'rrmemory' =>_("round robin with memory")); + + $i = 0; + foreach($types as $type => $name){ + $i++; + $this->goFonQueueStrategyOptions[$i] =$name; + $this->goFonQueueStrategyOptionsR[$i] =$type; + $tmp[$type] = $i; + } + + $this->goFonQueueStrategy= $tmp[$this->goFonQueueStrategy]; + + } @@ -87,7 +110,8 @@ class phonequeue extends plugin $display= $this->show_header(_("Remove the phone queue from this Account"), _("Phone queue is enabled for this group. You can disable it by clicking below.")); } else { - $display= $this->show_header(_("Create phone queue"), _("For this group the phone queues are disabled. You can enable them by clicking below.")); + $display= $this->show_header(_("Create phone queue"), + _("For this group the phone queues are disabled. You can enable them by clicking below.")); return ($display); } } @@ -132,18 +156,10 @@ class phonequeue extends plugin } } - $smarty= get_smarty(); $smarty->assign("goFonQueueLanguageOptions",array('de'=>_('German'),'ur'=>_('Uruguai'))); - $types= array('ringall' =>_("ring all"), - 'roundrobin' =>_("round robin"), - 'leastrecent'=>_("least recently called"), - 'fewestcalls'=>_("fewest completed calls"), - 'random' =>_("random"), - 'rrmemory' =>_("round robin with memory")); - sort($types); - $smarty->assign("goFonQueueStrategyOptions", $types); + $smarty->assign("goFonQueueStrategyOptions", $this->goFonQueueStrategyOptions); foreach($this->attributes as $key => $val){ $smarty->assign($val,$this->$val); @@ -175,8 +191,8 @@ class phonequeue extends plugin $message[] = $this->is_number_used(); } - if($this->generate_mysql_entension_entries()){ - $message[] = $this->generate_mysql_entension_entries(); + if($this->generate_mysql_table_entries()){ + $message[] = $this->generate_mysql_table_entries(); } if(!((is_numeric($this->goFonTimeOut))||(empty($this->goFonTimeOut)))){ @@ -200,11 +216,16 @@ class phonequeue extends plugin - function generate_mysql_entension_entries($save = false) + function generate_mysql_table_entries($save = false) { $SQL = array(); - + + if(!isset($_SESSION['config']->data['SERVERS']['FON'])){ + return(_("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(false); + } + // Get Configuration for Mysql database Server $a_SETUP = $_SESSION['config']->data['SERVERS']['FON']; $s_parameter =""; @@ -232,21 +253,25 @@ class phonequeue extends plugin $i = 0; $prio = 11; - if(empty($this->cn)){ - $this->cn = $this->parent->by_object['ogroup']->cn; - $this->attrs['cn'][0] = $this->parent->by_object['ogroup']->cn; + $delete = array(); + if(!empty($this->parent->by_object['ogroup'])){ + $new_cn = $this->parent->by_object['ogroup']->cn; } + $old_cn = $this->cn; + + $delete[]= "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$new_cn."';\n"; + $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_TABLE']." WHERE name='".$new_cn."'; \n"; + $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_MEMBER_TABLE']." WHERE queue_name='".$new_cn."';\n"; + $delete[]= "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$old_cn."';\n"; + $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_TABLE']." WHERE name='".$old_cn."'; \n"; + $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_MEMBER_TABLE']." WHERE queue_name='".$old_cn."';\n"; // Delete old Entries - $delete = array(); if(is_array($this->old_phone_numbers)){ foreach($this->old_phone_numbers as $phone){ $delete[]= "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$phone."';\n"; } } - $delete[]= "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$this->attrs['cn'][0]."';\n"; - $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_TABLE']." WHERE name=\"".$this->attrs['cn'][0]."\"; \n"; - $delete[]= "DELETE FROM ".$a_SETUP['QUEUE_MEMBER_TABLE']." WHERE queue_name=\"".$this->attrs['cn'][0]."\";\n"; /* Perform queries to delte old entries */ foreach($delete as $query){ @@ -256,15 +281,19 @@ class phonequeue extends plugin } } + $this->attrs['cn'][0] = $new_cn; + /* Append new Member for this queue */ $i = 0; $queueuser =array(); foreach($this->parent->by_object['ogroup']->memberList as $member){ - if(in_array("goFonAccount",$member['objectClass'])){ - $i ++ ; - $queueuser[$i]['queue_name'] = $this->attrs['cn'][0]; - $queueuser[$i]['interface'] = "SIP/".$member['uid'][0]; - $queueuser[$i]['penalty'] = 1; + if(isset($member['objectClass'])){ + if(in_array("goFonAccount",$member['objectClass'])){ + $i ++ ; + $queueuser[$i]['queue_name'] = $this->attrs['cn'][0]; + $queueuser[$i]['interface'] = "SIP/".$member['uid'][0]; + $queueuser[$i]['penalty'] = 1; + } } } @@ -284,18 +313,22 @@ class phonequeue extends plugin } } - /* generate Extension entries, with priority */ $queueusers=0; foreach($this->parent->by_object['ogroup']->memberList as $member){ - if(in_array("goFonAccount",$member['objectClass'])){ - $queueusers++; + if(isset($member['objectClass'])){ + if(in_array("goFonAccount",$member['objectClass'])){ + $queueusers++; + } } } $i = 0; + + $i_insert_only_once = false; + foreach($this->telephoneNumber as $num){ // If there are no member in a Queue @@ -303,12 +336,15 @@ class phonequeue extends plugin // A Queue is not deleted directly, it is stored until the o group is deleted - $a_ext[$i]['context'] = 'GOsa'; - $a_ext[$i]['exten'] = $this->attrs['cn'][0]; - $a_ext[$i]['priority'] = 1; - $a_ext[$i]['app'] = "Goto"; - $a_ext[$i]['appdata'] = $num."|1"; - $i ++ ; + if($i_insert_only_once == false){ + $i_insert_only_once = true; + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $this->attrs['cn'][0]; + $a_ext[$i]['priority'] = 1; + $a_ext[$i]['app'] = "Goto"; + $a_ext[$i]['appdata'] = $num."|1"; + $i ++ ; + } if($queueusers == 0){ $a_ext[$i]['context'] = 'GOsa'; @@ -410,7 +446,7 @@ class phonequeue extends plugin $queue["name"] = $this->attrs['cn'][0]; $queue["timeout"] = $this->goFonTimeOut; $queue["maxlen"] = $this->goFonMaxLen; - $queue["strategy" ] = $this->goFonQueueStrategy; + $queue["strategy" ] = $this->goFonQueueStrategyOptionsR[$this->goFonQueueStrategy]; $queue["queue_thankyou"] = $this->goFonQueueThankYou; $queue["queue_reporthold"] = $this->goFonQueueReportHold; $queue["announce_frequency"] = $this->goFonAnnounceFrequency; @@ -460,6 +496,7 @@ class phonequeue extends plugin } } + @mysql_close($r_con); return(false); } @@ -523,13 +560,14 @@ class phonequeue extends plugin if(!$this->is_account) return; $ldap= $this->config->get_ldap_link(); + $this->generate_mysql_table_entries(true); + plugin::save(); $this->attrs['goFonDialOption'] = ""; - foreach(array("goFonDialOption_t","goFonDialOption_T","goFonDialOption_r","goFonDialOption_h","goFonDialOption_H") as $val){ + foreach(array("goFonDialOption_t","goFonDialOption_T","goFonDialOption_r","goFonDialOption_h","goFonDialOption_H","cn") as $val){ $this->attrs['goFonDialOption'].=$this->$val; unset($this->attrs[$val]); } - $this->generate_mysql_entension_entries(true); if($this->attrs['goFonDialOption']=="") $this->attrs['goFonDialOption']=array(); if($this->goFonQueueAnnounceHoldtime != "no" ){ @@ -537,7 +575,9 @@ class phonequeue extends plugin }else{ $this->attrs['goFonQueueAnnounceHoldtime'] = "no"; } - + + $this->attrs['goFonQueueStrategy'] = $this->goFonQueueStrategyOptionsR[$this->goFonQueueStrategy]; + /* Save data to LDAP */ $ldap->cd($this->dn); $ldap->modify($this->attrs); @@ -583,8 +623,9 @@ class phonequeue extends plugin return( sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER'])); } + /* Remove all temporary attributes */ $tmp = array_flip($this->attributes); - foreach(array("goFonDialOption_t","goFonDialOption_T","goFonDialOption_r","goFonDialOption_h","goFonDialOption_H") as $val){ + foreach(array("goFonDialOption_t","goFonDialOption_T","goFonDialOption_r","goFonDialOption_h","goFonDialOption_H","cn") as $val){ unset($this->$val); unset($this->attrs[$val]); unset($tmp[$val]);