@@ -55,13 +55,13 @@ discard block |
||
55 | 55 | $entryId = strtoupper($entryid); |
56 | 56 | |
57 | 57 | $res = [ |
58 | - 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
59 | - 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
60 | - 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
61 | - 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
62 | - 'uniqueId' => '', // ULONG, 16 bytes, 32 hex characters |
|
63 | - 'server' => '', // CHAR, variable length |
|
64 | - 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
58 | + 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
59 | + 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
60 | + 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
61 | + 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
62 | + 'uniqueId' => '', // ULONG, 16 bytes, 32 hex characters |
|
63 | + 'server' => '', // CHAR, variable length |
|
64 | + 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
65 | 65 | ]; |
66 | 66 | |
67 | 67 | $res['length'] = strlen($entryId); |
@@ -100,13 +100,13 @@ discard block |
||
100 | 100 | $entryId = strtoupper($entryid); |
101 | 101 | |
102 | 102 | $res = [ |
103 | - 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
104 | - 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
105 | - 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
106 | - 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
107 | - 'id' => '', // ULONG, 4 bytes, 8 hex characters |
|
108 | - 'server' => '', // CHAR, variable length |
|
109 | - 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
103 | + 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
104 | + 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
105 | + 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
106 | + 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
107 | + 'id' => '', // ULONG, 4 bytes, 8 hex characters |
|
108 | + 'server' => '', // CHAR, variable length |
|
109 | + 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
110 | 110 | ]; |
111 | 111 | |
112 | 112 | $res['length'] = strlen($entryId); |
@@ -185,13 +185,13 @@ discard block |
||
185 | 185 | $entryId = strtoupper($entryId); |
186 | 186 | |
187 | 187 | $res = [ |
188 | - 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
189 | - 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
190 | - 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
191 | - 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
192 | - 'id' => '', // ULONG, 16 bytes, 32 hex characters |
|
193 | - 'extid' => '', // CHAR, variable length |
|
194 | - 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
188 | + 'abFlags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
189 | + 'guid' => '', // GUID, 16 bytes, 32 hex characters |
|
190 | + 'version' => '', // ULONG, 4 bytes, 8 hex characters |
|
191 | + 'type' => '', // ULONG, 4 bytes, 8 hex characters |
|
192 | + 'id' => '', // ULONG, 16 bytes, 32 hex characters |
|
193 | + 'extid' => '', // CHAR, variable length |
|
194 | + 'padding' => '', // TCHAR[3], 4 bytes, 8 hex characters (upto 4 bytes) |
|
195 | 195 | ]; |
196 | 196 | |
197 | 197 | $res['length'] = strlen($entryId); |
@@ -636,8 +636,7 @@ discard block |
||
636 | 636 | } |
637 | 637 | } |
638 | 638 | elseif ($checkValue !== null && $val != $checkValue) { |
639 | - $user = $GLOBALS["mapisession"] !== null ? $GLOBALS["mapisession"]->getUserName() : |
|
640 | - "<mapisession not yet initialized>"; |
|
639 | + $user = $GLOBALS["mapisession"] !== null ? $GLOBALS["mapisession"]->getUserName() : "<mapisession not yet initialized>"; |
|
641 | 640 | error_log(sprintf( |
642 | 641 | "Unexpected value in store entryid for user %s. Entryid: %s key: '%s' value: '%s' expected: %s", |
643 | 642 | $user, |
@@ -667,13 +666,13 @@ discard block |
||
667 | 666 | $entryId = strtoupper($entryId); |
668 | 667 | |
669 | 668 | $res = [ |
670 | - 'providerguid' => '', // GUID, 16 bytes, 32 hex characters |
|
671 | - 'messagetype' => '', // UINT, 2 bytes, 4 hex characters |
|
672 | - 'folderdbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
673 | - 'foldercounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
674 | - 'padding' => '', // TCHAR[3], 2 bytes, 4 hex characters |
|
675 | - 'messagedbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
676 | - 'messagecounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
669 | + 'providerguid' => '', // GUID, 16 bytes, 32 hex characters |
|
670 | + 'messagetype' => '', // UINT, 2 bytes, 4 hex characters |
|
671 | + 'folderdbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
672 | + 'foldercounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
673 | + 'padding' => '', // TCHAR[3], 2 bytes, 4 hex characters |
|
674 | + 'messagedbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
675 | + 'messagecounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
677 | 676 | ]; |
678 | 677 | |
679 | 678 | if (!$entryId) { |
@@ -733,12 +732,12 @@ discard block |
||
733 | 732 | $entryId = strtoupper($entryId); |
734 | 733 | |
735 | 734 | $res = [ |
736 | - 'abflags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
737 | - 'providerguid' => '', // GUID, 16 bytes, 32 hex characters |
|
738 | - 'foldertype' => '', // UINT, 2 bytes, 4 hex characters |
|
739 | - 'folderdbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
740 | - 'foldercounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
741 | - 'padding' => '', // TCHAR[3], 2 bytes, 4 hex characters |
|
735 | + 'abflags' => '', // BYTE[4], 4 bytes, 8 hex characters |
|
736 | + 'providerguid' => '', // GUID, 16 bytes, 32 hex characters |
|
737 | + 'foldertype' => '', // UINT, 2 bytes, 4 hex characters |
|
738 | + 'folderdbguid' => '', // GUID, 16 bytes, 32 hex characters |
|
739 | + 'foldercounter' => '', // ULONG, 6 bytes, 12 hex characters |
|
740 | + 'padding' => '', // TCHAR[3], 2 bytes, 4 hex characters |
|
742 | 741 | ]; |
743 | 742 | |
744 | 743 | if (!$entryId) { |
@@ -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) { |
@@ -247,14 +247,14 @@ discard block |
||
247 | 247 | $properties["reminderset"] = "PT_BOOLEAN:PSETID_Common:" . PidLidReminderSet; |
248 | 248 | $properties["flag_request"] = "PT_STRING8:PSETID_Common:" . PidLidFlagRequest; |
249 | 249 | $properties["flag_due_by"] = "PT_SYSTIME:PSETID_Common:" . PidLidReminderSignalTime; |
250 | - $properties["updatecounter"] = "PT_LONG:PSETID_Appointment:" . PidLidAppointmentSequence; // AppointmentSequenceNumber |
|
251 | - $properties["last_updatecounter"] = "PT_LONG:PSETID_Appointment:0x8203"; // AppointmentLastSequence |
|
250 | + $properties["updatecounter"] = "PT_LONG:PSETID_Appointment:" . PidLidAppointmentSequence; // AppointmentSequenceNumber |
|
251 | + $properties["last_updatecounter"] = "PT_LONG:PSETID_Appointment:0x8203"; // AppointmentLastSequence |
|
252 | 252 | $properties["busystatus"] = "PT_LONG:PSETID_Appointment:" . PidLidBusyStatus; |
253 | 253 | $properties["intendedbusystatus"] = "PT_LONG:PSETID_Appointment:" . PidLidIntendedBusyStatus; |
254 | 254 | $properties["start"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentStartWhole; |
255 | 255 | $properties["responselocation"] = "PT_STRING8:PSETID_Meeting:0x2"; |
256 | 256 | $properties["location"] = "PT_STRING8:PSETID_Appointment:" . PidLidLocation; |
257 | - $properties["requestsent"] = "PT_BOOLEAN:PSETID_Appointment:0x8229"; // PidLidFInvited, MeetingRequestWasSent |
|
257 | + $properties["requestsent"] = "PT_BOOLEAN:PSETID_Appointment:0x8229"; // PidLidFInvited, MeetingRequestWasSent |
|
258 | 258 | $properties["startdate"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentStartWhole; |
259 | 259 | $properties["duedate"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentEndWhole; |
260 | 260 | $properties["commonstart"] = "PT_SYSTIME:PSETID_Common:0x8516"; |
@@ -262,11 +262,11 @@ discard block |
||
262 | 262 | $properties["recurring"] = "PT_BOOLEAN:PSETID_Appointment:" . PidLidRecurring; |
263 | 263 | $properties["clipstart"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipStart; |
264 | 264 | $properties["clipend"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipEnd; |
265 | - $properties["start_recur_date"] = "PT_LONG:PSETID_Meeting:0xD"; // StartRecurTime |
|
266 | - $properties["start_recur_time"] = "PT_LONG:PSETID_Meeting:0xE"; // StartRecurTime |
|
267 | - $properties["end_recur_date"] = "PT_LONG:PSETID_Meeting:0xF"; // EndRecurDate |
|
268 | - $properties["end_recur_time"] = "PT_LONG:PSETID_Meeting:0x10"; // EndRecurTime |
|
269 | - $properties["is_exception"] = "PT_BOOLEAN:PSETID_Meeting:0xA"; // LID_IS_EXCEPTION |
|
265 | + $properties["start_recur_date"] = "PT_LONG:PSETID_Meeting:0xD"; // StartRecurTime |
|
266 | + $properties["start_recur_time"] = "PT_LONG:PSETID_Meeting:0xE"; // StartRecurTime |
|
267 | + $properties["end_recur_date"] = "PT_LONG:PSETID_Meeting:0xF"; // EndRecurDate |
|
268 | + $properties["end_recur_time"] = "PT_LONG:PSETID_Meeting:0x10"; // EndRecurTime |
|
269 | + $properties["is_exception"] = "PT_BOOLEAN:PSETID_Meeting:0xA"; // LID_IS_EXCEPTION |
|
270 | 270 | // Propose new time properties |
271 | 271 | $properties["proposed_start_whole"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentProposedStartWhole; |
272 | 272 | $properties["proposed_end_whole"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentProposedEndWhole; |
@@ -639,7 +639,7 @@ discard block |
||
639 | 639 | $properties = []; |
640 | 640 | $properties["entryid"] = PR_ENTRYID; |
641 | 641 | $properties["parent_entryid"] = PR_PARENT_ENTRYID; |
642 | - $properties["store_entryid"] = PR_STORE_ENTRYID; // is this required ??? |
|
642 | + $properties["store_entryid"] = PR_STORE_ENTRYID; // is this required ??? |
|
643 | 643 | $properties["icon_index"] = PR_ICON_INDEX; |
644 | 644 | $properties["message_class"] = PR_MESSAGE_CLASS; |
645 | 645 | $properties["message_flags"] = PR_MESSAGE_FLAGS; |
@@ -955,9 +955,9 @@ discard block |
||
955 | 955 | $properties["appointment_location"] = "PT_STRING8:PSETID_Appointment:" . PidLidLocation; |
956 | 956 | $properties["appointment_recurring_pattern"] = "PT_STRING8:PSETID_Appointment:0x8232"; |
957 | 957 | $properties["appointment_recurring"] = "PT_BOOLEAN:PSETID_Appointment:" . PidLidRecurring; |
958 | - $properties["appointment_startdate_recurring"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipStart; // ClipStart |
|
959 | - $properties["appointment_enddate_recurring"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipEnd; // ClipEnd |
|
960 | - $properties["appointment_exception"] = "PT_BOOLEAN:PSETID_Meeting:0xA"; // LID_IS_EXCEPTION |
|
958 | + $properties["appointment_startdate_recurring"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipStart; // ClipStart |
|
959 | + $properties["appointment_enddate_recurring"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipEnd; // ClipEnd |
|
960 | + $properties["appointment_exception"] = "PT_BOOLEAN:PSETID_Meeting:0xA"; // LID_IS_EXCEPTION |
|
961 | 961 | $properties["appointment_location"] = "PT_STRING8:PSETID_Appointment:" . PidLidLocation; |
962 | 962 | // Propose new time properties |
963 | 963 | $properties["proposed_start_date"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentProposedStartWhole; |
@@ -1243,18 +1243,18 @@ discard block |
||
1243 | 1243 | $properties["subject"] = PR_SUBJECT; |
1244 | 1244 | $properties["object_type"] = PR_OBJECT_TYPE; |
1245 | 1245 | |
1246 | - $properties["reminder"] = "PT_BOOLEAN:PSETID_Common:" . PidLidReminderSet; // PidLidReminderSet |
|
1247 | - $properties["reminder_minutes"] = "PT_LONG:PSETID_Common:" . PidLidReminderDelta; // PidLidReminderDelta |
|
1248 | - $properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:" . PidLidReminderTime; // PidLidReminderTime |
|
1249 | - $properties["flagdueby"] = "PT_SYSTIME:PSETID_Common:" . PidLidReminderSignalTime; // PidLidReminderSignalTime |
|
1246 | + $properties["reminder"] = "PT_BOOLEAN:PSETID_Common:" . PidLidReminderSet; // PidLidReminderSet |
|
1247 | + $properties["reminder_minutes"] = "PT_LONG:PSETID_Common:" . PidLidReminderDelta; // PidLidReminderDelta |
|
1248 | + $properties["reminder_time"] = "PT_SYSTIME:PSETID_Common:" . PidLidReminderTime; // PidLidReminderTime |
|
1249 | + $properties["flagdueby"] = "PT_SYSTIME:PSETID_Common:" . PidLidReminderSignalTime; // PidLidReminderSignalTime |
|
1250 | 1250 | |
1251 | - $properties["task_duedate"] = "PT_SYSTIME:PSETID_Task:" . PidLidTaskDueDate; // PidLidTaskDueDate |
|
1252 | - $properties["task_startdate"] = "PT_SYSTIME:PSETID_Task:" . PidLidTaskStartDate; // PidLidTaskStartDate |
|
1253 | - $properties["task_resetreminder"] = "PT_BOOLEAN:PSETID_Task:0x8107"; // PidLidTaskResetReminder |
|
1254 | - $properties["task_recurring"] = "PT_BOOLEAN:PSETID_Task:0x8126"; // PidLidTaskFRecurring |
|
1251 | + $properties["task_duedate"] = "PT_SYSTIME:PSETID_Task:" . PidLidTaskDueDate; // PidLidTaskDueDate |
|
1252 | + $properties["task_startdate"] = "PT_SYSTIME:PSETID_Task:" . PidLidTaskStartDate; // PidLidTaskStartDate |
|
1253 | + $properties["task_resetreminder"] = "PT_BOOLEAN:PSETID_Task:0x8107"; // PidLidTaskResetReminder |
|
1254 | + $properties["task_recurring"] = "PT_BOOLEAN:PSETID_Task:0x8126"; // PidLidTaskFRecurring |
|
1255 | 1255 | $properties["taskmode"] = "PT_LONG:PSETID_Common:0x8518"; |
1256 | 1256 | |
1257 | - $properties["appointment_recurring"] = "PT_BOOLEAN:PSETID_Appointment:" . PidLidRecurring; // PidLidRecurring |
|
1257 | + $properties["appointment_recurring"] = "PT_BOOLEAN:PSETID_Appointment:" . PidLidRecurring; // PidLidRecurring |
|
1258 | 1258 | $properties["appointment_startdate"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentStartWhole; |
1259 | 1259 | $properties["appointment_enddate"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidAppointmentEndWhole; |
1260 | 1260 | $properties["appointment_startdate_recurring"] = "PT_SYSTIME:PSETID_Appointment:" . PidLidClipStart; |
@@ -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 | } |
@@ -2088,7 +2088,8 @@ discard block |
||
2088 | 2088 | if (!empty($action['props']['timezone_iana'])) { |
2089 | 2089 | try { |
2090 | 2090 | $tzdef = mapi_ianatz_to_tzdef($action['props']['timezone_iana']); |
2091 | - } catch (Exception $e) { |
|
2091 | + } |
|
2092 | + catch (Exception $e) { |
|
2092 | 2093 | } |
2093 | 2094 | if ($tzdef !== false) { |
2094 | 2095 | $action['props']['tzdefstart'] = $action['props']['tzdefend'] = bin2hex($tzdef); |
@@ -3056,8 +3057,9 @@ discard block |
||
3056 | 3057 | |
3057 | 3058 | if (array_search(strtolower($foldername), $folderNames) !== false) { |
3058 | 3059 | $i = 2; |
3059 | - while (array_search(strtolower($foldername)." ($i)", $folderNames) !== false) |
|
3060 | - ++$i; |
|
3060 | + while (array_search(strtolower($foldername)." ($i)", $folderNames) !== false) { |
|
3061 | + ++$i; |
|
3062 | + } |
|
3061 | 3063 | $foldername .= " ($i)"; |
3062 | 3064 | } |
3063 | 3065 |
@@ -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')) { |