Code

Fixed ogroup saving
[gosa.git] / plugins / personal / connectivity / class_oxchangeAccount.inc
index bd36844e578fd7d72c81e0b3441ca8db9e8c16ea..d88b3801db7417353a97ed6c4457f5508c5a0b16 100644 (file)
@@ -39,6 +39,8 @@ class oxchangeAccount extends plugin
   var $attributes= array("OXAppointmentDays", "OXTaskDays", "OXTimeZone","mailEnabled");
   var $objectclasses= array("OXUserObject");
 
+  var $uid = "";
+
   var $oxconf = array();
   var $timezones=array(
       "Africa/Abidjan",
@@ -582,9 +584,9 @@ class oxchangeAccount extends plugin
 
   var $dnmode= "";
 
-  function oxchangeAccount ($config, $dn= NULL)
+  function oxchangeAccount ($config, $dn= NULL, $parent= NULL)
   {
-    plugin::plugin ($config, $dn);
+    plugin::plugin ($config, $dn, $parent);
     for ($i=0;$i<count($this->config->data['TABS']['CONNECTIVITY']);$i++){
       if($this->config->data['TABS']['CONNECTIVITY'][$i]['CLASS']=='oxchangeAccount') {
         $this->oxconf=$this->config->data['TABS']['CONNECTIVITY'][$i];
@@ -592,16 +594,22 @@ class oxchangeAccount extends plugin
       }
     }
 
+    /* Setting uid to default */
+    if(isset($this->attrs['uid'][0])){
+      $this->uid = $this->attrs['uid'][0];
+    }
+
     $this->dnmode= $this->config->current['DNMODE'];
   }
 
   function execute()
   {
        /* Call parent execute */
-       plugin::execute();
+       //plugin::execute();
 
 
-    /* Show tab dialog headers */
+       $display="";
+    /* Show tab dialog headers  * /
     $display="";
     if ($this->parent != NULL){
       if ($this->is_account){
@@ -620,7 +628,7 @@ class oxchangeAccount extends plugin
         }
       }
     }
-
+*/
     /* Show main page */
     $smarty= get_smarty();
 
@@ -649,7 +657,23 @@ class oxchangeAccount extends plugin
 
     if ($this->parent != NULL){
       $smarty->assign("tabbed", 1);
-    }
+    }else{
+      $smarty->assign("tabbed", 0);
+       }
+
+       /* Trying to open a Postgresql Database Server */
+       if (function_exists("pg_connect")){
+               if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
+                       $pgcon =  @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+                       if (! $pgcon){
+                               $smarty->assign("pg", false);
+                       }
+               }else{
+                       $smarty->assign("pg", false);
+               }
+       }else{
+               $smarty->assign("pg", false);
+       }
 
     $display.= $smarty->fetch (get_template_path('oxchange.tpl', TRUE, dirname(__FILE__)));
     return ($display);
@@ -693,14 +717,17 @@ class oxchangeAccount extends plugin
 
     /* Trying to open a Postgresql Database Server */
     if (function_exists("pg_connect")){
-      if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
-        $pgcon = pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+      if(isset($this->oxconf["PGUSER"]) and 
+                isset($this->oxconf["PGHOST"]) and 
+            isset($this->oxconf["PGDBNAME"]) and 
+         isset($this->oxconf["PGPASSWD"])){
+        $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
         if (! $pgcon){
           print_red(_("Couldn't connect to postgresql database!"));
           return;
         }
       }else{
-        print_red(_("Needed parameters to openexchange connectivity plugin are missing!"));
+        print_red(_("Needed parameters for openexchange connectivity plugin are missing!"));
         return;
       }
     }else{
@@ -713,14 +740,16 @@ class oxchangeAccount extends plugin
 
     if($ldap->dn_exists("ou=addr,".$this->dn)){
        $ldap->rmdir_recursive("ou=addr,".$this->dn);
-       show_ldap_error($ldap->get_error());
+       show_ldap_error($ldap->get_error(), _("Removing of oxchange addressbook failed"));
     }
 
     $ldap->cd($this->dn);
     @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,
         $this->attributes, "Save");
-    $ldap->modify($this->attrs);
-    show_ldap_error($ldap->get_error());
+    $this->cleanup();
+    $ldap->modify ($this->attrs); 
+    show_ldap_error($ldap->get_error(), _("Removing oxchange account failed"));
+
     /* Optionally execute a command after we're done */
     $this->postremove();
 
@@ -774,17 +803,22 @@ class oxchangeAccount extends plugin
       }
     }
 
-       $uidarray=array();
-       preg_match("/^(\w+(?=\=))=((\w|\s)+(?=\,)),.*/",$this->dn,$uidarray);
-       $uid=$uidarray[2];
-    
+    $uidarray=array();
+    preg_match("/^(\w+(?=\=))=((\w|\s|\.)+(?=\,)),.*/",$this->dn,$uidarray);
+    $uid=$uidarray[2];
+    if (trim($uid) == "") {
+      print_red(_("The Open-Xchange accountname is empty and thus invalid! Check to make sure that ".
+                  "you are not using any strange characters in the loginname."));
+      return;
+    }
+       
     if ($istemplate) $needupdate=TRUE;
 
     if($needupdate){
       /* Trying to open a Postgresql Database Server */
       if (function_exists("pg_connect")){
         if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){
-          $pgcon = pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
+          $pgcon =  @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]);
           if (! $pgcon){
             print_red(_("Couldn't connect to postgresql database!"));
             return;
@@ -804,15 +838,17 @@ class oxchangeAccount 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 of oxchange account failed"));
 
     /* Optionally execute a command after we're done */
     $this->postcreate();
 
     if($needupdate){
       $ldap->create_missing_trees("ou=addr,".$this->dn);
-      show_ldap_error($ldap->get_error());
+      show_ldap_error($ldap->get_error(), _("Creating oxchange addressbook tree failed"));
       /* Finally save data to postgresql server */
       pg_set_client_encoding ("UNICODE");
       $nv = "SELECT nextval ('serial_id')";