format("H") . "h"; } $dateEnd = self::GetDateStartOrDateEndFromVCalendarString("DTEND", $vCalendarString); if($dateEnd != null){ $endTimeValue = $dateEnd->format("H") . "h"; } } return [ "startTime" => $startTimeValue, "endTime" => $endTimeValue ]; } public static function ReadVCalendarDataBlob($vCalendarData){ if (is_resource($vCalendarData)) { return stream_get_contents($vCalendarData); } return $vCalendarData; } public static function hasAttachment(string $vCalendarString) : bool{ return str_contains($vCalendarString, 'ATTACH;FMTTYPE'); } public static function extractAttachments(string $vCalendarString): array { $attachments = []; preg_match_all('/ATTACH;FMTTYPE=([^;]+);FILENAME=([^;]+);X-NC-FILE-ID=([^;]+);/', $vCalendarString, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $attachments[] = [ 'type' =>explode("/" , $match[1])[0], // Extrait 'image' de 'image/png' 'mime_type' =>$match[1], // Extrait 'image' de 'image/png' 'name' => trim($match[2], '/'), 'file_id' => (int) $match[3], ]; } return $attachments; } }