Code

Renamed add/remove buttons
[gosa.git] / plugins / admin / systems / class_phoneGeneric.inc
index 14a467dec0c2541260003561f2af9bd439193fae..13fa101e9c681bb199396f27ecff570115becbf0 100644 (file)
@@ -21,11 +21,13 @@ class phoneGeneric extends plugin
   var $goFonType        = "";
   var $goFonDmtfMode    = "";
   var $goFonHost        = "";
-  var $goFonDefaultIP   = "";
+  var $goFonDefaultIP   = "dynamic";
   var $goFonQualify     = "";
   var $goFonAuth        = "";
   var $goFonSecret      = "";
   var $goFonInkeys      = "";
+  var $goFonPermit      = array();
+  var $goFonDeny        = array();
   var $goFonOutkey      = "";
   var $goFonTrunk       = "";
   var $goFonAccountCode = "";
@@ -36,7 +38,7 @@ class phoneGeneric extends plugin
   var $attributes= array("cn", "description", "macAddress", "ipHostNumber"
                          ,"goFonType","goFonDmtfMode","goFonHost","goFonDefaultIP",
                           "goFonQualify","goFonAuth","goFonSecret","goFonInkeys","goFonOutkey",
-                          "goFonTrunk","goFonAccountCode","goFonMSN","selected_categorie" 
+                          "goFonTrunk","goFonAccountCode","goFonMSN","selected_categorie","goFonPermit","goFonDeny" 
                          );
 
   /* this array defines which attributes are schown / saved for the different type of phones */ 
@@ -46,7 +48,7 @@ class phoneGeneric extends plugin
                              "1"=>array("cn", "description", "macAddress", "ipHostNumber",
                                   "goFonType","goFonHost","goFonDefaultIP",
                                   "goFonQualify","goFonAuth","goFonSecret","goFonInkeys","goFonOutkey",
-                                  "goFonTrunk","goFonAccountCode","selected_categorie"),
+                                  "goFonTrunk","goFonAccountCode","selected_categorie","goFonPermit","goFonDeny"),
                              "2"=>array("cn", "description", "macAddress", "ipHostNumber","goFonMSN"));
   
 
@@ -69,11 +71,24 @@ class phoneGeneric extends plugin
       $this->selected_categorie = 2;
     }elseif($this->goFonAccountCode != ""){
       $this->selected_categorie = 1 ;
+    
+      if(isset($this->attrs['goFonPermit']['count'])){
+        unset ($this->attrs['goFonPermit']['count']);
+        $this->goFonPermit=$this->attrs['goFonPermit'];
+      }  
+     
+      if(isset($this->attrs['goFonDeny']['count'])){
+        unset ($this->attrs['goFonDeny']['count'])   ;
+        $this->goFonDeny=$this->attrs['goFonDeny'];
+      } 
+
     } else {
       $this->selected_categorie = 0;
     }
-    
-    
+
+    if($this->goFonDefaultIP!="dynamic"){
+      $this->goFonDefaultIP = "network";
+    }
 
     /* Save dn for later references */
     $this->orig_dn= $this->dn;
@@ -81,8 +96,9 @@ class phoneGeneric extends plugin
 
   function execute()
   {
-  
-  
+       /* Call parent execute */
+       plugin::execute();
+
     /* Do we represent a valid phone? */
     if (!$this->is_account && $this->parent == NULL){
       $display= "<img alt=\"\" src=\"images/stop.png\" align=middle>&nbsp;<b>".
@@ -90,16 +106,75 @@ class phoneGeneric extends plugin
       return($display);
     }
 
+    /* handle Permit Add*/
+    if(isset($_POST['goFonPermitAdd'])){
+      if(isset($_POST['goFonPermitNew'])){
+        if(is_string($this->goFonPermit)){
+          $this->goFonPermit=array();
+        }
+        $new = $_POST['goFonPermitNew'];
+        if(strlen($new)> 1) {
+          $this->goFonPermit[]= $new;
+        }
+      }
+    }
+      
+    /* handle Deny Add*/
+    if(isset($_POST['goFonDenyAdd'])){
+      if(isset($_POST['goFonDenyNew'])){
+        if(is_string($this->goFonDeny)){
+          $this->goFonDeny=array();
+        }
+        $new = $_POST['goFonDenyNew'];
+        if(strlen($new)> 1) {
+          $this->goFonDeny[]= $new;
+        }
+      }
+    }
+
+    /* Handle Permit Deletion*/
+    if(isset($_POST['goFonPermitDel'])){
+      if(isset($_POST['goFonPermitS'])){
+        if(is_string($this->goFonPermit)){
+          $this->goFonPermit=array();
+        }
+        $new = $_POST['goFonPermitS'];
+        $tmp = array_flip($this->goFonPermit);
+        unset($tmp[$new]);
+        $this->goFonPermit=array();
+        foreach(array_flip($tmp) as $tm){
+          $this->goFonPermit[]=$tm;
+        }
+      }
+    }
+
+
+    /* Handle Permit Deletion*/
+    if(isset($_POST['goFonDenyDel'])){
+      if(isset($_POST['goFonDenyS'])){
+        if(is_string($this->goFonDeny)){
+          $this->goFonDeny=array();
+        }
+        $new = $_POST['goFonDenyS'];
+        $tmp = array_flip($this->goFonDeny);
+        unset($tmp[$new]);
+        $this->goFonDeny=array();
+        foreach(array_flip($tmp) as $tm){
+          $this->goFonDeny[]=$tm;
+        }
+      }
+    }
+  
     /* Fill templating stuff */
     $smarty= get_smarty();
     $smarty->assign("bases", $this->config->idepartments);
 
     /* Create Arrays for samrty select boxes */
-    $smarty->assign("categories",     array("SIP - phones","IAX - phones","CAPI - phones"));
+    $smarty->assign("categories",     array("SIP","IAX","CAPI"));
     $smarty->assign("goFonTypes",     array("peer"      =>"peer"      ,"user"   =>"user"    ,"friend" =>"friend"));
     $smarty->assign("goFonDmtfModes", array("inband"    =>"inband"    ,"rfc2833"=>"rfc2833" ,"info"   =>"info"));
-    $smarty->assign("goFonAuths",     array("plaintext" =>"plaintext" ,"md5"    =>"md5"     ,"rsa"    =>"rsa"));
-    $smarty->assign("goFonTrunks",    array("yes" =>"yes"             ,"no"     =>"no"));
+    $smarty->assign("goFonAuths",     array("plaintext" =>"plaintext" ,"md5"    =>"md5"     /*,"rsa"    =>"rsa"*/));
+    $smarty->assign("goFonTrunks",    array("yes" =>_("yes") ,"no" => _("no")));
 
     /* deativate all fields that are not used by the specified type */
     foreach($this->attributes as $att){
@@ -119,7 +194,9 @@ class phoneGeneric extends plugin
       $smarty->assign($attr."ACL", chkacl($this->acl, $attr));
     }
     $smarty->assign("base_select", $this->base);
-    
+   
+    $smarty->assign("goFonDefaultIPs",array("dynamic"=>_("dynamic"),"network"=>_("Networksettings")));
     /* Show Asterisk for required attribute ipHostNumber and macAddress */
     $smarty->assign("staticAddress", "<font class=\"must\">*</font>");
         
@@ -132,6 +209,15 @@ class phoneGeneric extends plugin
   function remove_from_parent()
   {
     $ldap= $this->config->get_ldap_link();
+    $ldap->cd($this->config->current['BASE']);
+
+    $ldap->search ("(&(objectClass=goFonAccount)(goFonHardware=".$this->cn."))", array("uid","cn"));
+    while ($attr =  $ldap->fetch()){
+      print_red(sprintf(_("Can't delete because there are user which are depending on this phone. One of them is user '%s'."),
+        ($attr['uid'][0]." - ".$attr['cn'][0])));
+      return;
+    }
+
     $ldap->rmdir($this->dn);
     show_ldap_error($ldap->get_error());
     $this->handle_post_events("remove");
@@ -169,18 +255,18 @@ class phoneGeneric extends plugin
     /* To check for valid ip*/
     $num="(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
 
-    if(in_array("goFonDefaultIP",$this->usedattrs[$this->selected_categorie])){
-      if (!preg_match("/^$num\\.$num\\.$num\\.$num$/", $this->goFonDefaultIP)){
-       $message[]= _("Wrong IP format in field goFonDefaultIP.");
-      }
-    }
+//    if(in_array("goFonDefaultIP",$this->usedattrs[$this->selected_categorie])){
+//      if (!preg_match("/^$num\\.$num\\.$num\\.$num$/", $this->goFonDefaultIP)){
+//       $message[]= _("Wrong IP format in field goFonDefaultIP.");
+//      }
+//    }
     
-    /* Check for valid number */
-    if(in_array("goFonDefaultIP",$this->usedattrs[$this->selected_categorie])){
-      if((strlen($this->goFonQualify))!=(strlen((int)($this->goFonQualify)))){
-        $message[]= _("The given value for goFonQualify is not a valid number.");
-      } 
-    }
+//    /* Check for valid number */
+//    if(in_array("goFonDefaultIP",$this->usedattrs[$this->selected_categorie])){
+//      if((strlen($this->goFonQualify))!=(strlen((int)($this->goFonQualify)))){
+//        $message[]= _("The given value for 'Response timeout' is not a valid number.");
+//      } 
+//    }
 
     /* must: cn, macAddress, ipHostNumber */
     if ($this->cn == "" && chkacl ($this->acl, "cn") == ""){
@@ -198,6 +284,11 @@ class phoneGeneric extends plugin
     if (!preg_match("/^$num\\.$num\\.$num\\.$num$/", $this->ipHostNumber)){
        $message[]= _("Wrong IP format in field IP-address.");
     }
+    
+    $tr = count(split(":",$this->macAddress));
+    if($tr!=6){
+      $message[]=(_("The given macaddress is invalid. There must be 6 2byte segments seperated by ':'."));
+    }
 
     $ui= get_userinfo();
     $acl= get_permissions ($this->dn, $ui->subtreeACL);
@@ -262,6 +353,10 @@ class phoneGeneric extends plugin
       $this->attrs= $attrs;
     }
 
+    if($this->goFonDefaultIP!="dynamic"){
+      $this->attrs['goFonDefaultIP'] = $this->ipHostNumber;
+    }    
+
     /* Write back to ldap */
     $ldap= $this->config->get_ldap_link();
     if ($this->orig_dn == 'new'){
@@ -277,10 +372,18 @@ class phoneGeneric extends plugin
 
       $ldap->cd($this->dn);
       $ldap->modify($this->attrs);
+      // $user_phone_reload   
+      $ldap->cd ($this->config->current['BASE']); 
+      $user_phone_assignment = $ldap->fetch($ldap->search("(&(objectClass=goFonAccount)(goFonHardware=".$this->cn."))",array("uid")));
+      if($user_phone_assignment){
+        $usertab= new usertabs($this->config,$this->config->data['TABS']['USERTABS'], $user_phone_assignment['dn']);
+        $usertab->by_object['phoneAccount']->is_modified = true;
+        $usertab->save();
+        unset($usertab);
+      }
       $this->handle_post_events("modify");
     }
     show_ldap_error($ldap->get_error());
-
     /* Optionally execute a command after we're done */
     $this->postcreate();
   }