@@ -360,7 +360,7 @@ |
||
| 360 | 360 | ]; |
| 361 | 361 | $fileDependencies[$filename] = [ |
| 362 | 362 | 'depends' => [], |
| 363 | - 'core' => $core, // Based on tag or on class or on file path? |
|
| 363 | + 'core' => $core, // Based on tag or on class or on file path? |
|
| 364 | 364 | ]; |
| 365 | 365 | |
| 366 | 366 | for ($j = 0, $lenJ = count($class[1]); $j < $lenJ; ++$j) { |
@@ -218,7 +218,7 @@ |
||
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | $Language->setLanguage($lang); |
| 221 | - setcookie('lang', $lang, [ 'expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict' ]); |
|
| 221 | + setcookie('lang', $lang, ['expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict']); |
|
| 222 | 222 | |
| 223 | 223 | // add extra header |
| 224 | 224 | header("X-grommunio: " . trim(file_get_contents('version'))); |
@@ -2119,9 +2119,9 @@ |
||
| 2119 | 2119 | $props = mapi_getprops($message, $properties); |
| 2120 | 2120 | // Do not update timezone information if the appointment times haven't changed |
| 2121 | 2121 | if (!isset($action['props']['commonstart']) && |
| 2122 | - !isset($action['props']['commonend']) && |
|
| 2123 | - !isset($action['props']['startdate']) && |
|
| 2124 | - !isset($action['props']['enddate']) |
|
| 2122 | + !isset($action['props']['commonend']) && |
|
| 2123 | + !isset($action['props']['startdate']) && |
|
| 2124 | + !isset($action['props']['enddate']) |
|
| 2125 | 2125 | ) { |
| 2126 | 2126 | unset($action['props']['tzdefstart'], $action['props']['tzdefend']); |
| 2127 | 2127 | } |
@@ -2059,9 +2059,9 @@ discard block |
||
| 2059 | 2059 | $messageProps = []; |
| 2060 | 2060 | // It stores the values that is exception allowed or not false -> not allowed |
| 2061 | 2061 | $isExceptionAllowed = true; |
| 2062 | - $delete = $actionType == 'delete'; // Flag for MeetingRequest Class whether to send update or cancel mail. |
|
| 2063 | - $basedate = false; // Flag for MeetingRequest Class whether to send an exception or not. |
|
| 2064 | - $isReminderTimeAllowed = true; // Flag to check reminder minutes is in range of the occurrences |
|
| 2062 | + $delete = $actionType == 'delete'; // Flag for MeetingRequest Class whether to send update or cancel mail. |
|
| 2063 | + $basedate = false; // Flag for MeetingRequest Class whether to send an exception or not. |
|
| 2064 | + $isReminderTimeAllowed = true; // Flag to check reminder minutes is in range of the occurrences |
|
| 2065 | 2065 | $properties = $GLOBALS['properties']->getAppointmentProperties(); |
| 2066 | 2066 | $send = false; |
| 2067 | 2067 | $oldProps = []; |
@@ -3003,7 +3003,7 @@ discard block |
||
| 3003 | 3003 | * convert flags of PR_MESSAGE_FLAGS property to flags that is |
| 3004 | 3004 | * used in mapi_message_setreadflag. |
| 3005 | 3005 | */ |
| 3006 | - $flag = MAPI_DEFERRED_ERRORS; // set unread flag, read receipt will be sent |
|
| 3006 | + $flag = MAPI_DEFERRED_ERRORS; // set unread flag, read receipt will be sent |
|
| 3007 | 3007 | |
| 3008 | 3008 | if (($flags & MSGFLAG_RN_PENDING) && isset($msg_action['send_read_receipt']) && $msg_action['send_read_receipt'] == false) { |
| 3009 | 3009 | $flag |= SUPPRESS_RECEIPT; |
@@ -3056,7 +3056,7 @@ discard block |
||
| 3056 | 3056 | |
| 3057 | 3057 | if (array_search(strtolower($foldername), $folderNames) !== false) { |
| 3058 | 3058 | $i = 2; |
| 3059 | - while (array_search(strtolower($foldername)." ($i)", $folderNames) !== false) |
|
| 3059 | + while (array_search(strtolower($foldername) . " ($i)", $folderNames) !== false) |
|
| 3060 | 3060 | ++$i; |
| 3061 | 3061 | $foldername .= " ($i)"; |
| 3062 | 3062 | } |
@@ -1058,8 +1058,9 @@ discard block |
||
| 1058 | 1058 | */ |
| 1059 | 1059 | public function renameFolder($store, $entryid, $name, &$folderProps) { |
| 1060 | 1060 | $folder = mapi_msgstore_openentry($store, $entryid); |
| 1061 | - if (!$folder) |
|
| 1062 | - return false; |
|
| 1061 | + if (!$folder) { |
|
| 1062 | + return false; |
|
| 1063 | + } |
|
| 1063 | 1064 | $result = false; |
| 1064 | 1065 | $folderProps = mapi_getprops($folder, [PR_ENTRYID, PR_STORE_ENTRYID, PR_DISPLAY_NAME]); |
| 1065 | 1066 | /* |
@@ -2087,7 +2088,8 @@ discard block |
||
| 2087 | 2088 | if (!empty($action['props']['timezone_iana'])) { |
| 2088 | 2089 | try { |
| 2089 | 2090 | $tzdef = mapi_ianatz_to_tzdef($action['props']['timezone_iana']); |
| 2090 | - } catch (Exception $e) { |
|
| 2091 | + } |
|
| 2092 | + catch (Exception $e) { |
|
| 2091 | 2093 | } |
| 2092 | 2094 | if ($tzdef !== false) { |
| 2093 | 2095 | $action['props']['tzdefstart'] = $action['props']['tzdefend'] = bin2hex($tzdef); |
@@ -2610,8 +2612,9 @@ discard block |
||
| 2610 | 2612 | $storeprops = mapi_getprops($store, [PR_IPM_OUTBOX_ENTRYID, PR_IPM_SENTMAIL_ENTRYID, PR_ENTRYID]); |
| 2611 | 2613 | $origStoreprops = mapi_getprops($origStore, [PR_ENTRYID]); |
| 2612 | 2614 | |
| 2613 | - if (!isset($storeprops[PR_IPM_OUTBOX_ENTRYID])) |
|
| 2614 | - return false; |
|
| 2615 | + if (!isset($storeprops[PR_IPM_OUTBOX_ENTRYID])) { |
|
| 2616 | + return false; |
|
| 2617 | + } |
|
| 2615 | 2618 | if (isset($storeprops[PR_IPM_SENTMAIL_ENTRYID])) { |
| 2616 | 2619 | $props[PR_SENTMAIL_ENTRYID] = $storeprops[PR_IPM_SENTMAIL_ENTRYID]; |
| 2617 | 2620 | } |
@@ -2778,8 +2781,9 @@ discard block |
||
| 2778 | 2781 | $message = $this->saveMessage($store, $entryid, $storeprops[PR_IPM_OUTBOX_ENTRYID], $props, $messageProps, $recipients, $attachments, [], $copyFromMessage, $copyAttachments, $copyRecipients, $copyInlineAttachmentsOnly, true, true, $isPlainText); |
| 2779 | 2782 | } |
| 2780 | 2783 | |
| 2781 | - if (!$message) |
|
| 2782 | - return false; |
|
| 2784 | + if (!$message) { |
|
| 2785 | + return false; |
|
| 2786 | + } |
|
| 2783 | 2787 | // Allowing to hook in just before the data sent away to be sent to the client |
| 2784 | 2788 | $GLOBALS['PluginManager']->triggerHook('server.core.operations.submitmessage', [ |
| 2785 | 2789 | 'moduleObject' => $this, |
@@ -3057,8 +3061,9 @@ discard block |
||
| 3057 | 3061 | |
| 3058 | 3062 | if (array_search(strtolower($foldername), $folderNames) !== false) { |
| 3059 | 3063 | $i = 2; |
| 3060 | - while (array_search(strtolower($foldername)." ($i)", $folderNames) !== false) |
|
| 3061 | - ++$i; |
|
| 3064 | + while (array_search(strtolower($foldername)." ($i)", $folderNames) !== false) { |
|
| 3065 | + ++$i; |
|
| 3066 | + } |
|
| 3062 | 3067 | $foldername .= " ($i)"; |
| 3063 | 3068 | } |
| 3064 | 3069 | |
@@ -195,8 +195,7 @@ |
||
| 195 | 195 | // TODO: move logon from MAPISession to here |
| 196 | 196 | |
| 197 | 197 | WebAppAuthentication::$_errorCode = isset($_SESSION['_keycloak_auth']) ? |
| 198 | - WebAppAuthentication::$_mapiSession->logon_token($username, $pass) : |
|
| 199 | - WebAppAuthentication::$_mapiSession->logon($username, $pass, DEFAULT_SERVER); |
|
| 198 | + WebAppAuthentication::$_mapiSession->logon_token($username, $pass) : WebAppAuthentication::$_mapiSession->logon($username, $pass, DEFAULT_SERVER); |
|
| 200 | 199 | |
| 201 | 200 | // Include external login plugins to be loaded |
| 202 | 201 | if (file_exists(BASE_PATH . 'extlogin.php')) { |
@@ -15,31 +15,31 @@ |
||
| 15 | 15 | $tag = $this->peek(); |
| 16 | 16 | |
| 17 | 17 | switch ($tag) { |
| 18 | - case 0: |
|
| 19 | - $res['otherName'] = $this->oid(-6); |
|
| 20 | - break; |
|
| 21 | - |
|
| 22 | - case 1: |
|
| 23 | - $res['rfc822Name'] = $this->next(-22); |
|
| 24 | - break; |
|
| 25 | - |
|
| 26 | - case 2: |
|
| 27 | - $res['dNSName'] = $this->next(-22); |
|
| 28 | - break; |
|
| 29 | - |
|
| 30 | - case 4: |
|
| 31 | - $this->next(4); |
|
| 32 | - $res['directoryName'] = $this->name(); |
|
| 33 | - $res['directoryName_'] = $this->nameasstring($res['directoryName']); |
|
| 34 | - break; |
|
| 35 | - |
|
| 36 | - case 6: |
|
| 37 | - $res['uniformResourceIdentifier'] = $this->next(-22); |
|
| 38 | - break; |
|
| 39 | - |
|
| 40 | - default: |
|
| 41 | - throw new \Exception("Unsupported GeneralName: {$tag}"); |
|
| 42 | -# trigger_error("Unsupported GeneralName: $tag", E_USER_ERROR); |
|
| 18 | + case 0: |
|
| 19 | + $res['otherName'] = $this->oid(-6); |
|
| 20 | + break; |
|
| 21 | + |
|
| 22 | + case 1: |
|
| 23 | + $res['rfc822Name'] = $this->next(-22); |
|
| 24 | + break; |
|
| 25 | + |
|
| 26 | + case 2: |
|
| 27 | + $res['dNSName'] = $this->next(-22); |
|
| 28 | + break; |
|
| 29 | + |
|
| 30 | + case 4: |
|
| 31 | + $this->next(4); |
|
| 32 | + $res['directoryName'] = $this->name(); |
|
| 33 | + $res['directoryName_'] = $this->nameasstring($res['directoryName']); |
|
| 34 | + break; |
|
| 35 | + |
|
| 36 | + case 6: |
|
| 37 | + $res['uniformResourceIdentifier'] = $this->next(-22); |
|
| 38 | + break; |
|
| 39 | + |
|
| 40 | + default: |
|
| 41 | + throw new \Exception("Unsupported GeneralName: {$tag}"); |
|
| 42 | + # trigger_error("Unsupported GeneralName: $tag", E_USER_ERROR); |
|
| 43 | 43 | } |
| 44 | 44 | |
| 45 | 45 | return $res; |
@@ -29,62 +29,62 @@ |
||
| 29 | 29 | if (!isset($actionType)) |
| 30 | 30 | continue; |
| 31 | 31 | switch ($actionType) { |
| 32 | - case 'certificate': |
|
| 33 | - $data = $this->verifyCertificate($actionData); |
|
| 34 | - $response = [ |
|
| 35 | - 'type' => 3, |
|
| 36 | - 'status' => $data['status'], |
|
| 37 | - 'message' => $data['message'], |
|
| 38 | - 'data' => $data['data'], |
|
| 39 | - ]; |
|
| 40 | - $this->addActionData('certificate', $response); |
|
| 41 | - $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 42 | - break; |
|
| 32 | + case 'certificate': |
|
| 33 | + $data = $this->verifyCertificate($actionData); |
|
| 34 | + $response = [ |
|
| 35 | + 'type' => 3, |
|
| 36 | + 'status' => $data['status'], |
|
| 37 | + 'message' => $data['message'], |
|
| 38 | + 'data' => $data['data'], |
|
| 39 | + ]; |
|
| 40 | + $this->addActionData('certificate', $response); |
|
| 41 | + $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 42 | + break; |
|
| 43 | 43 | |
| 44 | - case 'passphrase': |
|
| 45 | - $data = $this->verifyPassphrase($actionData); |
|
| 46 | - $response = [ |
|
| 47 | - 'type' => 3, |
|
| 48 | - 'status' => $data['status'], |
|
| 49 | - ]; |
|
| 50 | - $this->addActionData('passphrase', $response); |
|
| 51 | - $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 52 | - break; |
|
| 44 | + case 'passphrase': |
|
| 45 | + $data = $this->verifyPassphrase($actionData); |
|
| 46 | + $response = [ |
|
| 47 | + 'type' => 3, |
|
| 48 | + 'status' => $data['status'], |
|
| 49 | + ]; |
|
| 50 | + $this->addActionData('passphrase', $response); |
|
| 51 | + $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 52 | + break; |
|
| 53 | 53 | |
| 54 | - case 'changepassphrase': |
|
| 55 | - $data = $this->changePassphrase($actionData); |
|
| 56 | - if ($data === CHANGE_PASSPHRASE_SUCCESS) { |
|
| 57 | - // Reset cached passphrase. |
|
| 58 | - $encryptionStore = EncryptionStore::getInstance(); |
|
| 59 | - withPHPSession(function () use ($encryptionStore) { |
|
| 60 | - $encryptionStore->add('smime', ''); |
|
| 61 | - }); |
|
| 62 | - } |
|
| 63 | - $response = [ |
|
| 64 | - 'type' => 3, |
|
| 65 | - 'code' => $data, |
|
| 66 | - ]; |
|
| 67 | - $this->addActionData('changepassphrase', $response); |
|
| 68 | - $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 69 | - break; |
|
| 54 | + case 'changepassphrase': |
|
| 55 | + $data = $this->changePassphrase($actionData); |
|
| 56 | + if ($data === CHANGE_PASSPHRASE_SUCCESS) { |
|
| 57 | + // Reset cached passphrase. |
|
| 58 | + $encryptionStore = EncryptionStore::getInstance(); |
|
| 59 | + withPHPSession(function () use ($encryptionStore) { |
|
| 60 | + $encryptionStore->add('smime', ''); |
|
| 61 | + }); |
|
| 62 | + } |
|
| 63 | + $response = [ |
|
| 64 | + 'type' => 3, |
|
| 65 | + 'code' => $data, |
|
| 66 | + ]; |
|
| 67 | + $this->addActionData('changepassphrase', $response); |
|
| 68 | + $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 69 | + break; |
|
| 70 | 70 | |
| 71 | - case 'list': |
|
| 72 | - $data = $this->getPublicCertificates(); |
|
| 73 | - $this->addActionData('list', $data); |
|
| 74 | - $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 75 | - break; |
|
| 71 | + case 'list': |
|
| 72 | + $data = $this->getPublicCertificates(); |
|
| 73 | + $this->addActionData('list', $data); |
|
| 74 | + $GLOBALS['bus']->addData($this->getResponseData()); |
|
| 75 | + break; |
|
| 76 | 76 | |
| 77 | - case 'delete': |
|
| 78 | - // FIXME: handle multiple deletes? Separate function? |
|
| 79 | - $entryid = $actionData['entryid']; |
|
| 80 | - $root = mapi_msgstore_openentry($this->store, null); |
|
| 81 | - mapi_folder_deletemessages($root, [hex2bin($entryid)]); |
|
| 77 | + case 'delete': |
|
| 78 | + // FIXME: handle multiple deletes? Separate function? |
|
| 79 | + $entryid = $actionData['entryid']; |
|
| 80 | + $root = mapi_msgstore_openentry($this->store, null); |
|
| 81 | + mapi_folder_deletemessages($root, [hex2bin($entryid)]); |
|
| 82 | 82 | |
| 83 | - $this->sendFeedback(true); |
|
| 84 | - break; |
|
| 83 | + $this->sendFeedback(true); |
|
| 84 | + break; |
|
| 85 | 85 | |
| 86 | - default: |
|
| 87 | - $this->handleUnknownActionType($actionType); |
|
| 86 | + default: |
|
| 87 | + $this->handleUnknownActionType($actionType); |
|
| 88 | 88 | } |
| 89 | 89 | } |
| 90 | 90 | catch (Exception $e) { |
@@ -56,7 +56,7 @@ discard block |
||
| 56 | 56 | if ($data === CHANGE_PASSPHRASE_SUCCESS) { |
| 57 | 57 | // Reset cached passphrase. |
| 58 | 58 | $encryptionStore = EncryptionStore::getInstance(); |
| 59 | - withPHPSession(function () use ($encryptionStore) { |
|
| 59 | + withPHPSession(function() use ($encryptionStore) { |
|
| 60 | 60 | $encryptionStore->add('smime', ''); |
| 61 | 61 | }); |
| 62 | 62 | } |
@@ -167,7 +167,7 @@ discard block |
||
| 167 | 167 | $encryptionStore->add('smime', $data['passphrase'], time() + (5 * 60)); |
| 168 | 168 | } |
| 169 | 169 | else { |
| 170 | - withPHPSession(function () use ($encryptionStore, $data) { |
|
| 170 | + withPHPSession(function() use ($encryptionStore, $data) { |
|
| 171 | 171 | $encryptionStore->add('smime', $data['passphrase']); |
| 172 | 172 | }); |
| 173 | 173 | } |
@@ -25,9 +25,11 @@ |
||
| 25 | 25 | * @return bool true on success or false on failure |
| 26 | 26 | */ |
| 27 | 27 | public function execute() { |
| 28 | - foreach ($this->data as $actionType => $actionData) try { |
|
| 28 | + foreach ($this->data as $actionType => $actionData) { |
|
| 29 | + try { |
|
| 29 | 30 | if (!isset($actionType)) |
| 30 | 31 | continue; |
| 32 | + } |
|
| 31 | 33 | switch ($actionType) { |
| 32 | 34 | case 'certificate': |
| 33 | 35 | $data = $this->verifyCertificate($actionData); |
@@ -33,14 +33,14 @@ |
||
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | switch ($this->status) { |
| 36 | - case 'good': |
|
| 37 | - return OCSP_CERT_STATUS_GOOD; |
|
| 36 | + case 'good': |
|
| 37 | + return OCSP_CERT_STATUS_GOOD; |
|
| 38 | 38 | |
| 39 | - case 'revoked': |
|
| 40 | - return OCSP_CERT_STATUS_REVOKED; |
|
| 39 | + case 'revoked': |
|
| 40 | + return OCSP_CERT_STATUS_REVOKED; |
|
| 41 | 41 | |
| 42 | - default: |
|
| 43 | - return OCSP_CERT_STATUS_UNKOWN; |
|
| 42 | + default: |
|
| 43 | + return OCSP_CERT_STATUS_UNKOWN; |
|
| 44 | 44 | } |
| 45 | 45 | } |
| 46 | 46 | } |
@@ -98,8 +98,9 @@ |
||
| 98 | 98 | // Get messages from certificates |
| 99 | 99 | foreach ($privateCerts as $privateCert) { |
| 100 | 100 | $privateCertMessage = mapi_msgstore_openentry($store, $privateCert[PR_ENTRYID]); |
| 101 | - if ($privateCertMessage === false) |
|
| 102 | - continue; |
|
| 101 | + if ($privateCertMessage === false) { |
|
| 102 | + continue; |
|
| 103 | + } |
|
| 103 | 104 | $pkcs12 = ""; |
| 104 | 105 | $certs = []; |
| 105 | 106 | // Read pkcs12 cert from message |
@@ -376,8 +376,9 @@ discard block |
||
| 376 | 376 | |
| 377 | 377 | // Compare the timezone definitions of the client and the appointment. |
| 378 | 378 | // Further processing is only required if they don't match. |
| 379 | - if ($GLOBALS['entryid']->compareEntryIds($this->tzdef, $calendaritem['props']['tzdefstart'])) |
|
| 380 | - return; |
|
| 379 | + if ($GLOBALS['entryid']->compareEntryIds($this->tzdef, $calendaritem['props']['tzdefstart'])) { |
|
| 380 | + return; |
|
| 381 | + } |
|
| 381 | 382 | |
| 382 | 383 | if ($this->tzdefObj === false) { |
| 383 | 384 | $this->tzdefObj = $GLOBALS['entryid']->createTimezoneDefinitionObject($this->tzdef); |
@@ -389,8 +390,9 @@ discard block |
||
| 389 | 390 | // Find TZRULE_FLAG_EFFECTIVE_TZREG rule for the appointment's timezone |
| 390 | 391 | $appTzEffRuleIdx = getEffectiveTzreg($appTzDefStart['rules']); |
| 391 | 392 | |
| 392 | - if (is_null($this->tzEffRuleIdx) && !is_null($appTzEffRuleIdx)) |
|
| 393 | - return; |
|
| 393 | + if (is_null($this->tzEffRuleIdx) && !is_null($appTzEffRuleIdx)) { |
|
| 394 | + return; |
|
| 395 | + } |
|
| 394 | 396 | // first apply the bias of the appointment timezone and the bias of the browser |
| 395 | 397 | $localStart = $calendaritem['props']['startdate'] - $appTzDefStart['rules'][$appTzEffRuleIdx]['bias'] * 60 + $this->tzdefObj['rules'][$this->tzEffRuleIdx]['bias'] * 60; |
| 396 | 398 | if (isDst($appTzDefStart['rules'][$appTzEffRuleIdx], $calendaritem['props']['startdate'])) { |