Merge branch 'fixes/fix-get-file-id-agenda' into releases/release-h2f

This commit is contained in:
Tiavina 2025-03-24 12:46:05 +03:00
commit 737e30fe71

View File

@ -13,70 +13,75 @@ class VCalendarHelpers
{ {
$value = ""; $value = "";
preg_match("/$key:(.*)\r\n/", $vCalendarString, $matches); preg_match("/$key:(.*)\r\n/", $vCalendarString, $matches);
if (isset($matches[1])) { if (isset($matches[1])) {
$value = trim($matches[1]); $value = trim($matches[1]);
} }
return $value; return $value;
} }
public static function GetDateStartOrDateEndFromVCalendarString(string $key, string $vCalendarString) public static function GetDateStartOrDateEndFromVCalendarString(string $key, string $vCalendarString)
{ {
preg_match("/$key;TZID=([^:]+):(\d+T\d+)/", $vCalendarString, $matches); preg_match("/$key;TZID=([^:]+):(\d+T\d+)/", $vCalendarString, $matches);
if(!$matches){ if (!$matches) {
return null; return null;
} }
try{ try {
$dateTz = $matches[1]; $dateTz = $matches[1];
$datetimeString = $matches[2]; $datetimeString = $matches[2];
$datetimeValue = new DateTime($datetimeString, new DateTimeZone($dateTz)); $datetimeValue = new DateTime($datetimeString, new DateTimeZone($dateTz));
return $datetimeValue; return $datetimeValue;
} } catch (Exception $e) {
catch(Exception $e){
return null; return null;
} }
} }
public static function GetStartAndEndTimeFromVCalendarString(string $vCalendarString){ public static function GetStartAndEndTimeFromVCalendarString(string $vCalendarString)
{
$startTimeValue = ""; $startTimeValue = "";
$endTimeValue = ""; $endTimeValue = "";
if($vCalendarString != ""){ if ($vCalendarString != "") {
$dateStart = self::GetDateStartOrDateEndFromVCalendarString("DTSTART", $vCalendarString); $dateStart = self::GetDateStartOrDateEndFromVCalendarString("DTSTART", $vCalendarString);
if($dateStart != null){ if ($dateStart != null) {
$startTimeValue = $dateStart->format("H") . "h"; $startTimeValue = $dateStart->format("H") . "h";
} }
$dateEnd = self::GetDateStartOrDateEndFromVCalendarString("DTEND", $vCalendarString); $dateEnd = self::GetDateStartOrDateEndFromVCalendarString("DTEND", $vCalendarString);
if($dateEnd != null){ if ($dateEnd != null) {
$endTimeValue = $dateEnd->format("H") . "h"; $endTimeValue = $dateEnd->format("H") . "h";
} }
} }
return [ return [
"startTime" => $startTimeValue, "startTime" => $startTimeValue,
"endTime" => $endTimeValue "endTime" => $endTimeValue
]; ];
} }
public static function ReadVCalendarDataBlob($vCalendarData){ public static function ReadVCalendarDataBlob($vCalendarData)
{
if (is_resource($vCalendarData)) { if (is_resource($vCalendarData)) {
return stream_get_contents($vCalendarData); return stream_get_contents($vCalendarData);
} }
return $vCalendarData; return $vCalendarData;
} }
public static function hasAttachment(string $vCalendarString) : bool{ public static function hasAttachment(string $vCalendarString): bool
{
return str_contains($vCalendarString, 'ATTACH;FMTTYPE'); return str_contains($vCalendarString, 'ATTACH;FMTTYPE');
} }
public static function extractAttachments(string $vCalendarString): array { public static function extractAttachments(string $vCalendarString): array
{
$attachments = []; $attachments = [];
preg_match_all('/ATTACH;FMTTYPE=([^;]+);FILENAME=([^;]+);X-NC-FILE-ID=([^;]+);/', $vCalendarString, $matches, PREG_SET_ORDER); $vCalendarString = preg_replace("/\r\n|\n|\r/", "\n", $vCalendarString);
$vCalendarString = preg_replace("/\n[ \t]/", "", $vCalendarString);
preg_match_all('/ATTACH;FMTTYPE=([^;]+);FILENAME=([^;]+);X-NC-FILE-ID=(\d+)/', $vCalendarString, $matches, PREG_SET_ORDER);
foreach ($matches as $match) { foreach ($matches as $match) {
$attachments[] = [ $attachments[] = [
'type' =>explode("/" , $match[1])[0], // Extrait 'image' de 'image/png' 'type' => explode("/", $match[1])[0],
'mime_type' =>$match[1], // Extrait 'image' de 'image/png' 'mime_type' => $match[1],
'name' => trim($match[2], '/'), 'name' => trim($match[2], '/'),
'file_id' => (int) $match[3], 'file_id' => (int) $match[3],
]; ];
} }
return $attachments; return $attachments;
} }
} }