@@ -2192,9 +2192,9 @@ discard block |
||
2192 | 2192 | $messageProps = []; |
2193 | 2193 | // It stores the values that is exception allowed or not false -> not allowed |
2194 | 2194 | $isExceptionAllowed = true; |
2195 | - $delete = $actionType == 'delete'; // Flag for MeetingRequest Class whether to send update or cancel mail. |
|
2196 | - $basedate = false; // Flag for MeetingRequest Class whether to send an exception or not. |
|
2197 | - $isReminderTimeAllowed = true; // Flag to check reminder minutes is in range of the occurrences |
|
2195 | + $delete = $actionType == 'delete'; // Flag for MeetingRequest Class whether to send update or cancel mail. |
|
2196 | + $basedate = false; // Flag for MeetingRequest Class whether to send an exception or not. |
|
2197 | + $isReminderTimeAllowed = true; // Flag to check reminder minutes is in range of the occurrences |
|
2198 | 2198 | $properties = $GLOBALS['properties']->getAppointmentProperties(); |
2199 | 2199 | $send = false; |
2200 | 2200 | $oldProps = []; |
@@ -3115,7 +3115,7 @@ discard block |
||
3115 | 3115 | * convert flags of PR_MESSAGE_FLAGS property to flags that is |
3116 | 3116 | * used in mapi_message_setreadflag. |
3117 | 3117 | */ |
3118 | - $flag = MAPI_DEFERRED_ERRORS; // set unread flag, read receipt will be sent |
|
3118 | + $flag = MAPI_DEFERRED_ERRORS; // set unread flag, read receipt will be sent |
|
3119 | 3119 | |
3120 | 3120 | if (($flags & MSGFLAG_RN_PENDING) && isset($msg_action['send_read_receipt']) && $msg_action['send_read_receipt'] == false) { |
3121 | 3121 | $flag |= SUPPRESS_RECEIPT; |
@@ -2102,7 +2102,8 @@ |
||
2102 | 2102 | if (!empty($action['props']['timezone_iana'])) { |
2103 | 2103 | try { |
2104 | 2104 | $tzdef = mapi_ianatz_to_tzdef($action['props']['timezone_iana']); |
2105 | - } catch (Exception $e) { |
|
2105 | + } |
|
2106 | + catch (Exception $e) { |
|
2106 | 2107 | } |
2107 | 2108 | if ($tzdef !== false) { |
2108 | 2109 | $action['props']['tzdefstart'] = $action['props']['tzdefend'] = bin2hex($tzdef); |
@@ -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 | } |
@@ -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; |
@@ -185,7 +185,7 @@ discard block |
||
185 | 185 | WebAppAuthentication::_storeMAPISession(WebAppAuthentication::$_mapiSession->getSession()); |
186 | 186 | $tmp = explode('@', $username); |
187 | 187 | if (count($tmp) == 2) { |
188 | - setcookie('domainname', $tmp[1], [ 'expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict' ]); |
|
188 | + setcookie('domainname', $tmp[1], ['expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict']); |
|
189 | 189 | } |
190 | 190 | $wa_title = WebAppAuthentication::$_mapiSession->getFullName(); |
191 | 191 | $companyname = WebAppAuthentication::$_mapiSession->getCompanyName(); |
@@ -193,7 +193,7 @@ discard block |
||
193 | 193 | $wa_title .= " ({$companyname})"; |
194 | 194 | } |
195 | 195 | if (strlen($wa_title) != 0) { |
196 | - setcookie('webapp_title', $wa_title, [ 'expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict' ]); |
|
196 | + setcookie('webapp_title', $wa_title, ['expires' => time() + 31536000, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict']); |
|
197 | 197 | } |
198 | 198 | } |
199 | 199 | elseif (WebAppAuthentication::$_errorCode == MAPI_E_LOGON_FAILED || WebAppAuthentication::$_errorCode == MAPI_E_UNCONFIGURED) { |
@@ -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'))); |