Code

Hide php errors
[gosa.git] / plugins / personal / connectivity / class_oxchangeAccount.inc
index 9b774ba3a9d6fc077a95ce457a39502bfcddfc7d..062ceb3aa4a75413b421c07782cedc5cc1399b5b 100644 (file)
@@ -1,4 +1,22 @@
 <?php
+/*
+  This code is part of GOsa (https://gosa.gonicus.de)
+  Copyright (C) 2005 Alejandro Escanero Blanco
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
 
 class oxchangeAccount extends plugin
 {
@@ -581,7 +599,24 @@ class oxchangeAccount extends plugin
   {
 
     /* Show tab dialog headers */
-    $display= "";
+    $display="";
+    if ($this->parent != NULL){
+      if ($this->is_account){
+       $display="";
+      } else {
+        $obj= $this->parent->by_object['posixAccount'];
+       $obj2= $this->parent->by_object['mailAccount'];
+        if (! $obj->is_account){
+          $display= "<BR><BR><CENTER>"._("This account has <b>OpenXchange</b> features disabled. Posix features are needed for openXchange accounts, enable them first.")."</CENTER><BR><BR>";
+
+        } else {
+         if (! $obj2->is_account){
+           $display= "<BR><BR><CENTER>"._("This account has <b>OpenXchange</b> features disabled. Mail features are needed for openXchange accounts, enable them first.")."</CENTER><BR><BR>";
+            return ($display);
+         }
+        }
+      }
+    }
 
     /* Show main page */
     $smarty= get_smarty();
@@ -600,16 +635,13 @@ class oxchangeAccount extends plugin
     $smarty->assign("oxchangeAccountACL", chkacl($this->acl, "oxchangeAccount"));
     if ($this->is_account){
       $smarty->assign("oxchangeState", "checked");
+      $smarty->assign("oxState", "");
     } else {
       $smarty->assign("oxchangeState", "");
-      $smarty->assign("fstate", "disabled");
+      $smarty->assign("oxState", "disabled");
     }
 
-    // if ($this->is_account){
     $smarty->assign("timezones", $this->timezones);
-    // } else {
-    //         $smarty->assign("timezones", array("GMT"));
-    // }
 
 
     if ($this->parent != NULL){
@@ -676,12 +708,16 @@ class oxchangeAccount extends plugin
     plugin::remove_from_parent();
     $ldap= $this->config->get_ldap_link();
 
+    if($ldap->dn_exists("ou=addr,".$this->dn)){
+       $ldap->rmdir_recursive("ou=addr,".$this->dn);
+       show_ldap_error($ldap->get_error());
+    }
+
     $ldap->cd($this->dn);
     @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,
         $this->attributes, "Save");
     $ldap->modify($this->attrs);
     show_ldap_error($ldap->get_error());
-
     /* Optionally execute a command after we're done */
     $this->postremove();
 
@@ -720,12 +756,27 @@ class oxchangeAccount extends plugin
   {
 
     $needupdate=TRUE;
+    $istemplate=FALSE;
+
+
+/*      print "<pre>".print_r($this->attrs, true)."</pre>";*/
+
 
     /*First at all, we must check if this is new or is updated */
-    for ($i=0;$i<$this->attrs['objectClass']['count'];$i++){
-      if($this->attrs['objectClass'][$i]=="OXUserObject") $needupdate=FALSE;
+    /*Also check is we have a template, if is a template, is a new user */
+    if (isset($this->attrs['objectClass'])){
+      foreach ($this->attrs['objectClass'] as $object){
+        if($object=="OXUserObject") $needupdate=FALSE;
+       if($object=="gosaUserTemplate") $istemplate=TRUE;
+      }
     }
 
+       $uidarray=array();
+       preg_match("/^(\w+(?=\=))=((\w|\s)+(?=\,)),.*/",$this->dn,$uidarray);
+       $uid=$uidarray[2];
+    
+    if ($istemplate) $needupdate=TRUE;
+
     if($needupdate){
       /* Trying to open a Postgresql Database Server */
       if (function_exists("pg_connect")){
@@ -745,8 +796,6 @@ class oxchangeAccount extends plugin
       }
     }
 
-    $uid=$this->attrs[$this->dnmode][0];
-
     plugin::save();
 
     /* Write back to ldap */
@@ -759,6 +808,8 @@ class oxchangeAccount extends plugin
     $this->postcreate();
 
     if($needupdate){
+      $ldap->create_missing_trees("ou=addr,".$this->dn);
+      show_ldap_error($ldap->get_error());
       /* Finally save data to postgresql server */
       pg_set_client_encoding ("UNICODE");
       $nv = "SELECT nextval ('serial_id')";
@@ -794,6 +845,4 @@ class oxchangeAccount extends plugin
   }
 }
 
-
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>