Loading Dockerfile +2 −2 Original line number Original line Diff line number Diff line Loading @@ -7,7 +7,7 @@ ARG NEWS_VERSION="18.1.1" ARG QUOTA_WARN_VERSION="1.14.0" ARG QUOTA_WARN_VERSION="1.14.0" ARG NOTES_VERSION="4.5.1" ARG NOTES_VERSION="4.5.1" ARG CONTACTS_JOB_ID="400045" ARG CONTACTS_JOB_ID="400045" ARG CALENDAR_JOB_ID="398394" ARG CALENDAR_JOB_ID="414851" ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0" ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0" ARG EMAIL_RECOVERY_JOB_ID="389385" ARG EMAIL_RECOVERY_JOB_ID="389385" ARG RAINLOOP_VERSION="7.2.5" ARG RAINLOOP_VERSION="7.2.5" Loading @@ -18,7 +18,7 @@ ARG GOOGLE_INTEGRATION_VERSION="1.0.8" ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0" ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0" ARG OIDC_LOGIN_VERSION="2.3.3" ARG OIDC_LOGIN_VERSION="2.3.3" RUN sed -i 's/23,0,9,1/23,0,9,15/' ${BASE_DIR}/version.php RUN sed -i 's/23,0,9,1/23,0,9,19/' ${BASE_DIR}/version.php COPY custom_entrypoint.sh / COPY custom_entrypoint.sh / RUN chmod +x /custom_entrypoint.sh RUN chmod +x /custom_entrypoint.sh RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images Loading patches/015-email-mail-template.patch +50 −41 Original line number Original line Diff line number Diff line --- apps/dav/lib/CalDAV/Schedule/IMipPlugin.php 2022-09-06 17:56:20.875827300 +0530 --- ./apps/dav/lib/CalDAV/Schedule/IMipPlugin.php 2022-10-26 11:45:19.589156800 +0530 +++ apps/dav/lib/CalDAV/Schedule/IMipPlugin-new23.php 2022-09-06 17:13:51.925827300 +0530 +++ ./apps/dav/lib/CalDAV/Schedule/iMipPluginNew.php 2022-10-26 15:28:50.269156800 +0530 @@ -151,15 +151,6 @@ @@ -151,15 +151,6 @@ */ */ public function schedule(Message $iTipMessage) { public function schedule(Message $iTipMessage) { Loading @@ -16,14 +16,13 @@ $summary = $iTipMessage->message->VEVENT->SUMMARY; $summary = $iTipMessage->message->VEVENT->SUMMARY; if (parse_url($iTipMessage->sender, PHP_URL_SCHEME) !== 'mailto') { if (parse_url($iTipMessage->sender, PHP_URL_SCHEME) !== 'mailto') { @@ -252,7 +243,22 @@ @@ -252,7 +243,21 @@ $summary = ((string) $summary !== '') ? (string) $summary : $l10n->t('Untitled event'); $summary = ((string) $summary !== '') ? (string) $summary : $l10n->t('Untitled event'); - $this->addSubjectAndHeading($template, $l10n, $method, $summary); - $this->addSubjectAndHeading($template, $l10n, $method, $summary); + if ( count($vevent)>1) { + if ( count($vevent)>1) { + $this->addSubjectAndHeadingUpdated($template, $l10n, $method, $summary); + $this->addSubjectAndHeadingUpdated($template, $l10n, $method, $summary); + + } else { + } else { + $this->addSubjectAndHeading($template, $l10n, $method, $summary); + $this->addSubjectAndHeading($template, $l10n, $method, $summary); + } + } Loading @@ -40,7 +39,15 @@ $this->addBulletList($template, $l10n, $vevent); $this->addBulletList($template, $l10n, $vevent); // Only add response buttons to invitation requests: Fix Issue #11230 // Only add response buttons to invitation requests: Fix Issue #11230 @@ -542,24 +548,84 @@ @@ -516,6 +521,7 @@ return $dtStart->format('Y-m-d') === $dtEnd->format('Y-m-d'); } + /** * @param IEMailTemplate $template * @param IL10N $l10n @@ -542,24 +548,86 @@ /** /** * @param IEMailTemplate $template * @param IEMailTemplate $template * @param IL10N $l10n * @param IL10N $l10n Loading Loading @@ -83,10 +90,7 @@ + $selectedEvent = $currentevent; + $selectedEvent = $currentevent; + } + } + } + } + + + if ($selectedEvent->SUMMARY) { + if ($selectedEvent->SUMMARY) { + + if (trim($selectedEvent->SUMMARY) == trim($parentevent->SUMMARY)) { + if (trim($selectedEvent->SUMMARY) == trim($parentevent->SUMMARY)) { + $template->addBodyListItem($selectedEvent->SUMMARY, $l10n->t('Title:'), + $template->addBodyListItem($selectedEvent->SUMMARY, $l10n->t('Title:'), + $this->getAbsoluteImagePath('caldav/title.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/title.png'),'','',self::IMIP_INDENT); Loading @@ -104,7 +108,6 @@ + $parenttimestart= substr(($parentevent->DTSTART), strpos(($parentevent->DTSTART), "T") + 1); + $parenttimestart= substr(($parentevent->DTSTART), strpos(($parentevent->DTSTART), "T") + 1); + $selectedtimeend= substr(($selectedEvent->DTEND), strpos(($selectedEvent->DTEND), "T") + 1); + $selectedtimeend= substr(($selectedEvent->DTEND), strpos(($selectedEvent->DTEND), "T") + 1); + $parenttimeend= substr(($parentevent->DTEND), strpos(($parentevent->DTEND), "T") + 1); + $parenttimeend= substr(($parentevent->DTEND), strpos(($parentevent->DTEND), "T") + 1); + + if (trim($selectedtimestart)==trim($parenttimestart) && trim($selectedtimeend)==trim($parenttimeend)) { + if (trim($selectedtimestart)==trim($parenttimestart) && trim($selectedtimeend)==trim($parenttimeend)) { + $template->addBodyListItem($meetingWhen, $l10n->t('Time:'), + $template->addBodyListItem($meetingWhen, $l10n->t('Time:'), + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); Loading @@ -112,22 +115,28 @@ + $template->addBodyListItemModified($meetingWhen, $l10n->t('Updated Time:'), + $template->addBodyListItemModified($meetingWhen, $l10n->t('Updated Time:'), + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + } + } + + } } - if ($vevent->LOCATION) { - if ($vevent->LOCATION) { - $template->addBodyListItem($vevent->LOCATION, $l10n->t('Location:'), - $template->addBodyListItem($vevent->LOCATION, $l10n->t('Location:'), - $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); - $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + if ($selectedEvent->LOCATION) { + if ($selectedEvent->LOCATION) { + if (trim($selectedEvent->LOCATION) == trim($parentevent->LOCATION)) { + if (trim($selectedEvent->LOCATION) == trim($parentevent->LOCATION)) { + if (filter_var(trim($selectedEvent->LOCATION), FILTER_VALIDATE_URL)) { + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $this->getAbsoluteImagePath('caldav/videocall.png'),'','',self::IMIP_INDENT); + } else { + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + } + } else { + if (filter_var(trim($selectedEvent->LOCATION), FILTER_VALIDATE_URL)) { + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $this->getAbsoluteImagePath('caldav/videocall.png'),'','',self::IMIP_INDENT); + } else { + } else { + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + } + } + + } + } } - if ($vevent->URL) { - if ($vevent->URL) { - $url = $vevent->URL->getValue(); - $url = $vevent->URL->getValue(); Loading @@ -136,13 +145,14 @@ $template->addBodyListItem(sprintf('<a href="%s">%s</a>', $template->addBodyListItem(sprintf('<a href="%s">%s</a>', htmlspecialchars($url), htmlspecialchars($url), htmlspecialchars($url)), htmlspecialchars($url)), @@ -568,12 +634,18 @@ @@ -567,13 +635,16 @@ $this->getAbsoluteImagePath('caldav/link.png'), $url,'',self::IMIP_INDENT); $url,'',self::IMIP_INDENT); } } - - $this->addAttendees($template, $l10n, $vevent); - $this->addAttendees($template, $l10n, $vevent); - + $this->addAttendees($template, $l10n, $selectedEvent); + $this->addAttendees($template, $l10n, $selectedEvent); /* Put description last, like an email body, since it can be arbitrarily long */ /* Put description last, like an email body, since it can be arbitrarily long */ - if ($vevent->DESCRIPTION) { - if ($vevent->DESCRIPTION) { - $template->addBodyListItem($vevent->DESCRIPTION->getValue(), $l10n->t('Description:'), - $template->addBodyListItem($vevent->DESCRIPTION->getValue(), $l10n->t('Description:'), Loading @@ -155,11 +165,10 @@ + $template->addBodyListItemModified($selectedEvent->DESCRIPTION, $l10n->t('Updated Description:'), + $template->addBodyListItemModified($selectedEvent->DESCRIPTION, $l10n->t('Updated Description:'), + $this->getAbsoluteImagePath('caldav/description.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/description.png'),'','',self::IMIP_INDENT); + } + } + } } } } @@ -662,7 +734,7 @@ @@ -662,7 +733,7 @@ Message $iTipMessage, $lastOccurrence) { Message $iTipMessage, $lastOccurrence) { $token = $this->createInvitationToken($iTipMessage, $lastOccurrence); $token = $this->createInvitationToken($iTipMessage, $lastOccurrence); Loading @@ -168,7 +177,7 @@ $l10n->t('Accept'), $l10n->t('Accept'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ 'token' => $token, 'token' => $token, @@ -670,18 +742,10 @@ @@ -670,18 +741,10 @@ $l10n->t('Decline'), $l10n->t('Decline'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ 'token' => $token, 'token' => $token, Loading Loading
Dockerfile +2 −2 Original line number Original line Diff line number Diff line Loading @@ -7,7 +7,7 @@ ARG NEWS_VERSION="18.1.1" ARG QUOTA_WARN_VERSION="1.14.0" ARG QUOTA_WARN_VERSION="1.14.0" ARG NOTES_VERSION="4.5.1" ARG NOTES_VERSION="4.5.1" ARG CONTACTS_JOB_ID="400045" ARG CONTACTS_JOB_ID="400045" ARG CALENDAR_JOB_ID="398394" ARG CALENDAR_JOB_ID="414851" ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0" ARG USER_BACKEND_RAW_SQL_VERSION="1.3.0" ARG EMAIL_RECOVERY_JOB_ID="389385" ARG EMAIL_RECOVERY_JOB_ID="389385" ARG RAINLOOP_VERSION="7.2.5" ARG RAINLOOP_VERSION="7.2.5" Loading @@ -18,7 +18,7 @@ ARG GOOGLE_INTEGRATION_VERSION="1.0.8" ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0" ARG LDAP_WRITE_SUPPORT_VERSION="1.4.0" ARG OIDC_LOGIN_VERSION="2.3.3" ARG OIDC_LOGIN_VERSION="2.3.3" RUN sed -i 's/23,0,9,1/23,0,9,15/' ${BASE_DIR}/version.php RUN sed -i 's/23,0,9,1/23,0,9,19/' ${BASE_DIR}/version.php COPY custom_entrypoint.sh / COPY custom_entrypoint.sh / RUN chmod +x /custom_entrypoint.sh RUN chmod +x /custom_entrypoint.sh RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images Loading
patches/015-email-mail-template.patch +50 −41 Original line number Original line Diff line number Diff line --- apps/dav/lib/CalDAV/Schedule/IMipPlugin.php 2022-09-06 17:56:20.875827300 +0530 --- ./apps/dav/lib/CalDAV/Schedule/IMipPlugin.php 2022-10-26 11:45:19.589156800 +0530 +++ apps/dav/lib/CalDAV/Schedule/IMipPlugin-new23.php 2022-09-06 17:13:51.925827300 +0530 +++ ./apps/dav/lib/CalDAV/Schedule/iMipPluginNew.php 2022-10-26 15:28:50.269156800 +0530 @@ -151,15 +151,6 @@ @@ -151,15 +151,6 @@ */ */ public function schedule(Message $iTipMessage) { public function schedule(Message $iTipMessage) { Loading @@ -16,14 +16,13 @@ $summary = $iTipMessage->message->VEVENT->SUMMARY; $summary = $iTipMessage->message->VEVENT->SUMMARY; if (parse_url($iTipMessage->sender, PHP_URL_SCHEME) !== 'mailto') { if (parse_url($iTipMessage->sender, PHP_URL_SCHEME) !== 'mailto') { @@ -252,7 +243,22 @@ @@ -252,7 +243,21 @@ $summary = ((string) $summary !== '') ? (string) $summary : $l10n->t('Untitled event'); $summary = ((string) $summary !== '') ? (string) $summary : $l10n->t('Untitled event'); - $this->addSubjectAndHeading($template, $l10n, $method, $summary); - $this->addSubjectAndHeading($template, $l10n, $method, $summary); + if ( count($vevent)>1) { + if ( count($vevent)>1) { + $this->addSubjectAndHeadingUpdated($template, $l10n, $method, $summary); + $this->addSubjectAndHeadingUpdated($template, $l10n, $method, $summary); + + } else { + } else { + $this->addSubjectAndHeading($template, $l10n, $method, $summary); + $this->addSubjectAndHeading($template, $l10n, $method, $summary); + } + } Loading @@ -40,7 +39,15 @@ $this->addBulletList($template, $l10n, $vevent); $this->addBulletList($template, $l10n, $vevent); // Only add response buttons to invitation requests: Fix Issue #11230 // Only add response buttons to invitation requests: Fix Issue #11230 @@ -542,24 +548,84 @@ @@ -516,6 +521,7 @@ return $dtStart->format('Y-m-d') === $dtEnd->format('Y-m-d'); } + /** * @param IEMailTemplate $template * @param IL10N $l10n @@ -542,24 +548,86 @@ /** /** * @param IEMailTemplate $template * @param IEMailTemplate $template * @param IL10N $l10n * @param IL10N $l10n Loading Loading @@ -83,10 +90,7 @@ + $selectedEvent = $currentevent; + $selectedEvent = $currentevent; + } + } + } + } + + + if ($selectedEvent->SUMMARY) { + if ($selectedEvent->SUMMARY) { + + if (trim($selectedEvent->SUMMARY) == trim($parentevent->SUMMARY)) { + if (trim($selectedEvent->SUMMARY) == trim($parentevent->SUMMARY)) { + $template->addBodyListItem($selectedEvent->SUMMARY, $l10n->t('Title:'), + $template->addBodyListItem($selectedEvent->SUMMARY, $l10n->t('Title:'), + $this->getAbsoluteImagePath('caldav/title.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/title.png'),'','',self::IMIP_INDENT); Loading @@ -104,7 +108,6 @@ + $parenttimestart= substr(($parentevent->DTSTART), strpos(($parentevent->DTSTART), "T") + 1); + $parenttimestart= substr(($parentevent->DTSTART), strpos(($parentevent->DTSTART), "T") + 1); + $selectedtimeend= substr(($selectedEvent->DTEND), strpos(($selectedEvent->DTEND), "T") + 1); + $selectedtimeend= substr(($selectedEvent->DTEND), strpos(($selectedEvent->DTEND), "T") + 1); + $parenttimeend= substr(($parentevent->DTEND), strpos(($parentevent->DTEND), "T") + 1); + $parenttimeend= substr(($parentevent->DTEND), strpos(($parentevent->DTEND), "T") + 1); + + if (trim($selectedtimestart)==trim($parenttimestart) && trim($selectedtimeend)==trim($parenttimeend)) { + if (trim($selectedtimestart)==trim($parenttimestart) && trim($selectedtimeend)==trim($parenttimeend)) { + $template->addBodyListItem($meetingWhen, $l10n->t('Time:'), + $template->addBodyListItem($meetingWhen, $l10n->t('Time:'), + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); Loading @@ -112,22 +115,28 @@ + $template->addBodyListItemModified($meetingWhen, $l10n->t('Updated Time:'), + $template->addBodyListItemModified($meetingWhen, $l10n->t('Updated Time:'), + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/time.png'),'','',self::IMIP_INDENT); + } + } + + } } - if ($vevent->LOCATION) { - if ($vevent->LOCATION) { - $template->addBodyListItem($vevent->LOCATION, $l10n->t('Location:'), - $template->addBodyListItem($vevent->LOCATION, $l10n->t('Location:'), - $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); - $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + if ($selectedEvent->LOCATION) { + if ($selectedEvent->LOCATION) { + if (trim($selectedEvent->LOCATION) == trim($parentevent->LOCATION)) { + if (trim($selectedEvent->LOCATION) == trim($parentevent->LOCATION)) { + if (filter_var(trim($selectedEvent->LOCATION), FILTER_VALIDATE_URL)) { + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $this->getAbsoluteImagePath('caldav/videocall.png'),'','',self::IMIP_INDENT); + } else { + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $template->addBodyListItem($selectedEvent->LOCATION, $l10n->t('Location:'), + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + } + } else { + if (filter_var(trim($selectedEvent->LOCATION), FILTER_VALIDATE_URL)) { + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $this->getAbsoluteImagePath('caldav/videocall.png'),'','',self::IMIP_INDENT); + } else { + } else { + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $template->addBodyListItemModified($selectedEvent->LOCATION, $l10n->t('Updated Location:'), + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/location.png'),'','',self::IMIP_INDENT); + } + } + + } + } } - if ($vevent->URL) { - if ($vevent->URL) { - $url = $vevent->URL->getValue(); - $url = $vevent->URL->getValue(); Loading @@ -136,13 +145,14 @@ $template->addBodyListItem(sprintf('<a href="%s">%s</a>', $template->addBodyListItem(sprintf('<a href="%s">%s</a>', htmlspecialchars($url), htmlspecialchars($url), htmlspecialchars($url)), htmlspecialchars($url)), @@ -568,12 +634,18 @@ @@ -567,13 +635,16 @@ $this->getAbsoluteImagePath('caldav/link.png'), $url,'',self::IMIP_INDENT); $url,'',self::IMIP_INDENT); } } - - $this->addAttendees($template, $l10n, $vevent); - $this->addAttendees($template, $l10n, $vevent); - + $this->addAttendees($template, $l10n, $selectedEvent); + $this->addAttendees($template, $l10n, $selectedEvent); /* Put description last, like an email body, since it can be arbitrarily long */ /* Put description last, like an email body, since it can be arbitrarily long */ - if ($vevent->DESCRIPTION) { - if ($vevent->DESCRIPTION) { - $template->addBodyListItem($vevent->DESCRIPTION->getValue(), $l10n->t('Description:'), - $template->addBodyListItem($vevent->DESCRIPTION->getValue(), $l10n->t('Description:'), Loading @@ -155,11 +165,10 @@ + $template->addBodyListItemModified($selectedEvent->DESCRIPTION, $l10n->t('Updated Description:'), + $template->addBodyListItemModified($selectedEvent->DESCRIPTION, $l10n->t('Updated Description:'), + $this->getAbsoluteImagePath('caldav/description.png'),'','',self::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/description.png'),'','',self::IMIP_INDENT); + } + } + } } } } @@ -662,7 +734,7 @@ @@ -662,7 +733,7 @@ Message $iTipMessage, $lastOccurrence) { Message $iTipMessage, $lastOccurrence) { $token = $this->createInvitationToken($iTipMessage, $lastOccurrence); $token = $this->createInvitationToken($iTipMessage, $lastOccurrence); Loading @@ -168,7 +177,7 @@ $l10n->t('Accept'), $l10n->t('Accept'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ 'token' => $token, 'token' => $token, @@ -670,18 +742,10 @@ @@ -670,18 +741,10 @@ $l10n->t('Decline'), $l10n->t('Decline'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ 'token' => $token, 'token' => $token, Loading