Merge branch '2013.10' into 2014.11
authorPhilipp Schüle <p.schuele@metaways.de>
Mon, 4 Jan 2016 14:48:40 +0000 (15:48 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Mon, 4 Jan 2016 14:48:40 +0000 (15:48 +0100)
tine20/Tinebase/User.php
tine20/Tinebase/js/ExceptionDialog.js

index c809b89..ac5c60c 100644 (file)
@@ -474,6 +474,11 @@ class Tinebase_User
             $currentUser->accountEmailAddress       = $user->accountEmailAddress;
             $currentUser->accountHomeDirectory      = $user->accountHomeDirectory;
             $currentUser->accountLoginShell         = $user->accountLoginShell;
+
+            $currentUser->accountStatus             = isset($user->accountStatus)
+                ? $user->accountStatus
+                : Tinebase_Model_User::ACCOUNT_STATUS_ENABLED;
+
             if (! empty($user->visibility) && $currentUser->visibility !== $user->visibility) {
                 $currentUser->visibility            = $user->visibility;
                 if (empty($currentUser->contact_id) && $currentUser->visibility == Tinebase_Model_FullUser::VISIBILITY_DISPLAYED) {
@@ -755,12 +760,13 @@ class Tinebase_User
                 return;
             }
 
-            // at first, we expire the user
+            // at first, we expire+deactivate the user
             $now = Tinebase_DateTime::now();
-            if (! $user->accountExpires) {
+            if (! $user->accountExpires || $user->accountStatus !== Tinebase_Model_User::ACCOUNT_STATUS_DISABLED) {
                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
-                    . ' Set expiry date of ' . $user->accountLoginName . ' to ' . $now);
+                    . ' Disable user and set expiry date of ' . $user->accountLoginName . ' to ' . $now);
                 $user->accountExpires = $now;
+                $user->accountStatus = Tinebase_Model_User::ACCOUNT_STATUS_DISABLED;
                 Tinebase_User::getInstance()->updateUserInSqlBackend($user);
             } else {
                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
@@ -869,7 +875,7 @@ class Tinebase_User
 
         $user = new Tinebase_Model_FullUser(array(
             'accountLoginName'      => $adminLoginName,
-            'accountStatus'         => 'enabled',
+            'accountStatus'         => Tinebase_Model_User::ACCOUNT_STATUS_ENABLED,
             'accountPrimaryGroup'   => $userGroup->getId(),
             'accountLastName'       => $adminLastName,
             'accountDisplayName'    => $adminLastName . ', ' . $adminFirstName,
index f8981ea..64f5973 100644 (file)
@@ -203,7 +203,6 @@ Tine.Tinebase.ExceptionDialog = Ext.extend(Ext.Window, {
     /**
      * send the report to tine20.org bugracker
      * 
-     * NOTE: due to same domain policy, we need to send data via a img get request
      * @private
      */
     onSendReport: function () {
@@ -230,21 +229,44 @@ Tine.Tinebase.ExceptionDialog = Ext.extend(Ext.Window, {
         if (! Ext.getCmp('tb-exceptiondialog-send-contact').collapsed) {
             this.exception.contact = Ext.getCmp('tb-exceptiondialog-contact').getValue();
         }
-        
-        // NOTE:  - we have about 80 chars overhead (url, paramnames etc) in each request
-        //        - 1024 chars are expected to be pass client/server limits savely => 940
-        //        - base64 means about 30% overhead => 600 
-        var chunks = this.strChunk(Ext.util.JSON.encode(this.exception), 600);
-        
-        var img = [];
-        for (var i = 0; i < chunks.length; i++) {
-            var part = i+1 + '/' + chunks.length;
-            var data = {data : this.base64encode('hash=' + hash + '&part=' + part + '&data=' + chunks[i])};
-            
-            var url = baseUrl + '?' + Ext.urlEncode(data);
-            img.push(Ext.DomHelper.insertFirst(this.el, {tag: 'img', src: url, hidden: true}, true));
+
+
+        var ua = navigator.userAgent.toLowerCase(),
+            isIE = ua.match(/msie (\d+)/),
+            useCOSR = !isIE || isIE[1] > 9;
+
+        if (useCOSR) {
+            // NOTE: - we create a new connection to not compromise the json key
+            var conn = new Ext.data.Connection();
+            conn.request({
+                url: baseUrl,
+                method: 'POST',
+                jsonData: Ext.encode({
+                    jsonrpc: '2.0',
+                    method: 'API.reportBug',
+                    id: ++Ext.Ajax.requestId,
+                    params: {
+                        hash: hash,
+                        exception: this.exception
+                    }
+                })
+            });
+        } else {
+            // NOTE:  - we have about 80 chars overhead (url, paramnames etc) in each request
+            //        - 1024 chars are expected to be pass client/server limits savely => 940
+            //        - base64 means about 30% overhead => 600
+            var chunks = this.strChunk(Ext.util.JSON.encode(this.exception), 600);
+
+            var img = [];
+            for (var i = 0; i < chunks.length; i++) {
+                var part = i + 1 + '/' + chunks.length;
+                var data = {data: this.base64encode('hash=' + hash + '&part=' + part + '&data=' + chunks[i])};
+
+                var url = baseUrl + '?' + Ext.urlEncode(data);
+                img.push(Ext.DomHelper.insertFirst(this.el, {tag: 'img', src: url, hidden: true}, true));
+            }
         }
-        
+
         if (! this.nonInteractive) {
             window.setTimeout(this.showTransmissionCompleted, 4000);
         }