<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[13800] sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events: Translate: Sync "Translation Events" from GitHub</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/13800">13800</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/13800","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>psrpinto</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2024-06-11 13:39:11 +0000 (Tue, 11 Jun 2024)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Translate: Sync "Translation Events" from GitHub</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscsstranslationeventscss">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetsjstranslationeventsjs">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/js/translation-events.js</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsautoloadphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventcapabilitiesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventdatephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-date.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositorycachedphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository-cached.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesnotificationsnotificationsschedulephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-schedule.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesnotificationsnotificationssendphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-send.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesattendeelistphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/attendee/list.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventcreatephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/create.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventdetailsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/details.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventeditphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventlisttrashedphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list-trashed.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventlistphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventtranslationsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/translations.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesusermyeventsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludestemplatesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventswporggptranslationeventsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetscsstranslationeventscss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css    2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/css/translation-events.css      2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -174,7 +174,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /* Event list: Event buttons. */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-.event-list-item-button {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+a.event-list-item-button:any-link {
</ins><span class="cx" style="display: block; padding: 0 10px">         text-decoration: none;
</span><span class="cx" style="display: block; padding: 0 10px">        vertical-align: bottom;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsassetsjstranslationeventsjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/js/translation-events.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/js/translation-events.js      2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/assets/js/translation-events.js        2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -235,11 +235,37 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                        const eventDateObj = new Date( datetime );
</span><span class="cx" style="display: block; padding: 0 10px">                                        timeEl.title       = eventDateObj.toUTCString();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        const timeContent  = timeEl.querySelector( 'span' ) ? timeEl.querySelector( 'span' ) : timeEl;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        const userTimezoneOffset   = new Date().getTimezoneOffset();
</span><span class="cx" style="display: block; padding: 0 10px">                                        const userTimezoneOffsetMs = userTimezoneOffset * 60 * 1000;
</span><span class="cx" style="display: block; padding: 0 10px">                                        const userLocalDateTime    = new Date( eventDateObj.getTime() - userTimezoneOffsetMs );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        const options = {
+                                               weekday: 'short',
+                                               year: 'numeric',
+                                               month: 'short',
+                                               day: 'numeric',
+                                               hour: 'numeric',
+                                               minute: 'numeric',
+                                               timeZoneName: 'short'
+                                       };
+                                       if ( timeEl.classList.contains( 'absolute' ) ) {
+                                               if ( timeEl.dataset.format ) {
+                                                       if ( timeEl.dataset.format.includes( 'l' ) ) {
+                                                               options.weekday = 'long';
+                                                       } else if ( ! timeEl.dataset.format.includes( 'D' ) ) {
+                                                               delete options.weekday;
+                                                       }
+                                                       if ( timeEl.dataset.format.includes( 'F' ) ) {
+                                                               options.month = 'long';
+                                                       } else if ( timeEl.dataset.format.includes( 'm' ) || timeEl.dataset.format.includes( 'n' ) ) {
+                                                               options.month = 'numeric';
+                                                       }
+                                               }
+                                               timeContent.textContent = userLocalDateTime.toLocaleTimeString( navigator.language, options );
+                                       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                         if ( timeEl.classList.contains( 'relative' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                // Display the relative time.
</span><span class="cx" style="display: block; padding: 0 10px">                                                const now    = new Date();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -259,30 +285,29 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                const seconds    = Math.floor( diff / 1000 );
</span><span class="cx" style="display: block; padding: 0 10px">                                                const minutes    = Math.floor( seconds / 60 );
</span><span class="cx" style="display: block; padding: 0 10px">                                                const hours      = Math.floor( minutes / 60 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                const days       = Math.floor( hours / 24 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         let days         = Math.floor( hours / 24 );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 const weeks      = Math.floor( days / 7 );
</span><span class="cx" style="display: block; padding: 0 10px">                                                const months     = Math.floor( days / 30 );
</span><span class="cx" style="display: block; padding: 0 10px">                                                const years      = Math.floor( days / 365.25 );
</span><span class="cx" style="display: block; padding: 0 10px">                                                let relativeTime = '';
</span><span class="cx" style="display: block; padding: 0 10px">                                                if ( years > 1 ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        if ( ! timeEl.classList.contains( 'hide-if-too-far' ) ) {
-                                                               relativeTime = years + ' year' + ( years > 1 ? 's' : '' );
-                                                       } else {
-                                                               in_text = '';
-                                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 relativeTime = years + ' year' + ( years > 1 ? 's' : '' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 } else if ( months > 1 ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        if ( ! timeEl.classList.contains( 'hide-if-too-far' ) ) {
-                                                               relativeTime = months + ' month' + ( months > 1 ? 's' : '' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 relativeTime = months + ' month' + ( months > 1 ? 's' : '' );
+                                               } else if ( weeks > 2 ) {
+                                                       relativeTime = weeks + ' week' + ( weeks > 1 ? 's' : '' );
+                                               } else if ( weeks === 1 ) {
+                                                       if ( diff < 0 ) {
+                                                               relativeTime = 'last week';
+                                                               ago_text     = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                in_text = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         relativeTime = 'next week';
+                                                               in_text      = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                } else if ( weeks > 1 ) {
-                                                       if ( ! timeEl.classList.contains( 'hide-if-too-far' ) || weeks < 3 ) {
-                                                               relativeTime = weeks + ' week' + ( weeks > 1 ? 's' : '' );
-                                                       } else {
-                                                               in_text = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         } else if ( days > 0 ) {
+                                                       if ( hours > 12 ) {
+                                                               days += 1;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                } else if ( days > 0 ) {
</del><span class="cx" style="display: block; padding: 0 10px">                                                         relativeTime = days + ' day' + ( days > 1 ? 's' : '' );
</span><span class="cx" style="display: block; padding: 0 10px">                                                } else if ( hours > 0 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        relativeTime = hours + ' hour' + ( hours > 1 ? 's' : '' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -291,34 +316,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        relativeTime = 'less than a minute';
</span><span class="cx" style="display: block; padding: 0 10px">                                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                timeEl.textContent = in_text + relativeTime + ago_text;
-                                               return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         if ( timeEl.classList.contains( 'absolute' ) ) {
+                                                       timeContent.textContent += ' (' + in_text + relativeTime + ago_text + ')';
+                                               } else {
+                                                       timeContent.textContent = in_text + relativeTime + ago_text;
+                                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        const options = {
-                                               weekday: 'short',
-                                               year: 'numeric',
-                                               month: 'short',
-                                               day: 'numeric',
-                                               hour: 'numeric',
-                                               minute: 'numeric',
-                                               timeZoneName: 'short'
-                                       };
-                                       if ( timeEl.dataset.format ) {
-                                               if ( timeEl.dataset.format.includes( 'l' ) ) {
-                                                       options.weekday = 'long';
-                                               } else if ( ! timeEl.dataset.format.includes( 'D' ) ) {
-                                                       delete options.weekday;
-                                               }
-                                               if ( timeEl.dataset.format.includes( 'F' ) ) {
-                                                       options.month = 'long';
-                                               } else if ( timeEl.dataset.format.includes( 'm' ) || timeEl.dataset.format.includes( 'n' ) ) {
-                                                       options.month = 'numeric';
-                                               }
-                                       }
-                                       timeEl.textContent = userLocalDateTime.toLocaleTimeString( navigator.language, options );
</del><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        }( jQuery, $gp )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ }( jQuery,
+       $gp )
</ins><span class="cx" style="display: block; padding: 0 10px"> );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsautoloadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php 2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/autoload.php   2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,7 +3,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/upgrade.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/urls.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/templates.php';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-require_once __DIR__ . '/templates/helper-functions.php';
</del><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/route.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/attendee/list.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/includes/routes/event/create.php';
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventcapabilitiesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php        2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-capabilities.php  2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,15 +43,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                self::EDIT_TIMEZONE,
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private DateTimeImmutable $now;
</ins><span class="cx" style="display: block; padding: 0 10px">         private Event_Repository_Interface $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        private Attendee_Repository $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        private Stats_Calculator $stats_calculator;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                DateTimeImmutable $now,
</ins><span class="cx" style="display: block; padding: 0 10px">                 Event_Repository_Interface $event_repository,
</span><span class="cx" style="display: block; padding: 0 10px">                Attendee_Repository $attendee_repository,
</span><span class="cx" style="display: block; padding: 0 10px">                Stats_Calculator $stats_calculator
</span><span class="cx" style="display: block; padding: 0 10px">        ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->now                 = $now;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->event_repository    = $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->attendee_repository = $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->stats_calculator    = $stats_calculator;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -260,7 +263,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        private function has_edit_field( WP_User $user, Event $event, $cap ): bool {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now                 = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
</del><span class="cx" style="display: block; padding: 0 10px">                 $event_end_plus_1_hr = $event->end()->modify( '+1 hour' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( self::EDIT_DESCRIPTION === $cap ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -267,7 +269,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $event->start() > $now ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $event->start() > $this->now ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -279,10 +281,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return ( self::EDIT_TITLE === $cap || self::EDIT_END === $cap );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $event->end()->is_in_the_past() && $now < $event_end_plus_1_hr ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $event->end()->is_in_the_past() && $this->now < $event_end_plus_1_hr ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return ( self::EDIT_TITLE === $cap || self::EDIT_END === $cap );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $event->end()->is_in_the_past() && $now > $event_end_plus_1_hr ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $event->end()->is_in_the_past() && $this->now > $event_end_plus_1_hr ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return ( self::EDIT_DESCRIPTION === $cap );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventdatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-date.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-date.php        2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-date.php  2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,6 +6,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use DateTimeImmutable;
</span><span class="cx" style="display: block; padding: 0 10px"> use DateTimeZone;
</span><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Wporg\TranslationEvents\Translation_Events;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Event_Date
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21,11 +22,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $timezone = new DateTimeZone( 'UTC' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                try {
-                       $utc_date = new DateTime( $date, new DateTimeZone( 'UTC' ) );
-                       $utc_date->setTimezone( $timezone );
-               } catch ( Exception $e ) {
-                       $utc_date = new DateTime( 'now', new DateTimeZone( 'UTC' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( 'now' === $date ) {
+                       $utc_date = Translation_Events::now();
+               } else {
+                       try {
+                               $utc_date = new DateTime( $date, new DateTimeZone( 'UTC' ) );
+                               $utc_date->setTimezone( $timezone );
+                       } catch ( Exception $e ) {
+                               $utc_date = Translation_Events::now();
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                parent::__construct( $utc_date->format( 'Y-m-d H:i:s' ), $timezone );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,16 +59,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function is_in_the_past() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $current_date_time = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-               return $this->utc() < $current_date_time;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return $this->utc() < Translation_Events::now();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function print_relative_time_html( $format = false ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function print_relative_time_html() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 echo wp_kses(
</span><span class="cx" style="display: block; padding: 0 10px">                        '<time
</span><span class="cx" style="display: block; padding: 0 10px">                                class="event-utc-time relative' . ( $this->is_in_the_past() ? '' : ' future' ) . '"
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                datetime="' . esc_attr( $this ) . '">' . esc_html( $format ? $this->format( $format ) : $this->get_variable_text() ) . '</time>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         datetime="' . esc_attr( $this ) . '">' . $this->get_relative_time() . '</time>',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                'span' => array(),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'time' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'class'    => array(),
</span><span class="cx" style="display: block; padding: 0 10px">                                        'datetime' => array(),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -72,13 +77,47 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function get_relative_time() {
+               $relative = human_time_diff( $this->format( 'U' ) );
+               if ( $this->is_in_the_past() ) {
+                       if ( '1 ' === substr( $relative, 0, 2 ) ) {
+                               // translators: %s: A timeframe like week or month.
+                               return sprintf( __( 'last %s', 'gp-translation-events' ), substr( $relative, 2 ) );
+                       }
+                       // translators: %s: A relative time like 3 weeks.
+                       return sprintf( __( '%s ago', 'gp-translation-events' ), $relative );
+               }
+               if ( '1 ' === substr( $relative, 0, 2 ) ) {
+                       // translators: %s: A timeframe like week or month.
+                       return sprintf( __( 'next %s', 'gp-translation-events' ), substr( $relative, 2 ) );
+               }
+                       // translators: %s: A relative time like 3 weeks.
+               return sprintf( __( 'in %s', 'gp-translation-events' ), $relative );
+       }
+
+       public function print_absolute_and_relative_time_html( $format = 'D, F j, Y H:i T' ) {
+               echo wp_kses(
+                       '<time
+                               class="event-utc-time absolute relative' . ( $this->is_in_the_past() ? '' : ' future' ) . '"
+                               datetime="' . esc_attr( $this ) . '">' . $this->get_prefixed_date( $this->format( $format ) . ' (' . $this->get_relative_time() . ')' ) . '</time>',
+                       array(
+                               'span' => array(),
+                               'time' => array(
+                                       'class'    => array(),
+                                       'datetime' => array(),
+                               ),
+                       )
+               );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function print_time_html( $format = 'D, F j, Y H:i T' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                echo wp_kses(
</span><span class="cx" style="display: block; padding: 0 10px">                        '<time
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                class="event-utc-time full-time"
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         class="event-utc-time absolute full-time"
</ins><span class="cx" style="display: block; padding: 0 10px">                                 data-format="' . esc_attr( $format ) . '"
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                datetime="' . esc_attr( $this ) . '">' . esc_html( $this->format( $format ) ) . '</time>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         datetime="' . esc_attr( $this ) . '">' . $this->format( $format ) . '</time>',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                'span' => array(),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'time' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'class'       => array(),
</span><span class="cx" style="display: block; padding: 0 10px">                                        'datetime'    => array(),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -89,16 +128,34 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Generate a date prefixed with a word.
+        *
+        * @param string $date The date to prefix.
+        *
+        * @return string The date text.
+        */
+       abstract public function get_prefixed_date( $date ): string;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Generate variable text depending on when the event starts or ends.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return string The end date text.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return string The date text.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        abstract public function get_variable_text(): string;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Event_Start_Date extends Event_Date {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function get_prefixed_date( $date ): string {
+               if ( $this->is_in_the_past() ) {
+                       // translators: %s: A date.
+                       return sprintf( __( 'started %s', 'gp-translation-events' ), '<span>' . $date . '</span>' );
+               }
+               // translators: %s: A date.
+               return sprintf( __( 'starts %s', 'gp-translation-events' ), '<span>' . $date . '</span>' );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function get_variable_text(): string {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $interval       = $this->diff( new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $interval       = $this->diff( Translation_Events::now() );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $hours_left     = ( $interval->d * 24 ) + $interval->h;
</span><span class="cx" style="display: block; padding: 0 10px">                $hours_in_a_day = 24;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,8 +170,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                return sprintf( _n( 'started %s hour ago', 'started %s hours ago', $hours_left ), $hours_left );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // translators: %s: A date.
-                       return sprintf( __( 'started %s', 'gp-translation-events' ), $this->format( 'D, F j, Y H:i T' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->get_prefixed_date( $this->format( 'D, F j, Y H:i T' ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 0 === $hours_left ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -135,18 +192,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return $out;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // translators: %s: A date.
-               return sprintf( __( 'started %s', 'gp-translation-events' ), $this->format( 'D, F j, Y H:i T' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->get_prefixed_date( $this->format( 'D, F j, Y H:i T' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Event_End_Date extends Event_Date {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function get_prefixed_date( $date ): string {
+               if ( $this->is_in_the_past() ) {
+                       // translators: %s: A date.
+                       return sprintf( __( 'ended %s', 'gp-translation-events' ), '<span>' . $date . '</span>' );
+               }
+               // translators: %s: A date.
+               return sprintf( __( 'until %s', 'gp-translation-events' ), '<span>' . $date . '</span>' );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function get_variable_text(): string {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $this->is_in_the_past() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return sprintf( 'ended %s', $this->format( 'l, F j, Y' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->get_prefixed_date( $this->format( 'D, F j, Y H:i T' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $interval       = $this->diff( new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $interval       = $this->diff( Translation_Events::now() );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $hours_left     = ( $interval->d * 24 ) + $interval->h;
</span><span class="cx" style="display: block; padding: 0 10px">                $hours_in_a_day = 24;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -168,6 +233,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return $out;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return sprintf( 'until %s', $this->format( 'l, F j, Y H:i' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->get_prefixed_date( $this->format( 'D, F j, Y H:i T' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositorycachedphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository-cached.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository-cached.php   2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository-cached.php     2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,9 +45,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assert_pagination_arguments( $page, $page_size );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $cache_duration = self::CACHE_DURATION;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now            = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-               $boundary_start = $now;
-               $boundary_end   = $now->modify( "+$cache_duration seconds" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $boundary_start = $this->now;
+               $boundary_end   = $this->now->modify( "+$cache_duration seconds" );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $events = wp_cache_get( self::ACTIVE_EVENTS_KEY, '', false, $found );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $found ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -61,8 +60,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $events = array_values(
</span><span class="cx" style="display: block; padding: 0 10px">                        array_filter(
</span><span class="cx" style="display: block; padding: 0 10px">                                $events,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                function ( $event ) use ( $now ) {
-                                       return $event->start() <= $now && $now <= $event->end();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         function ( $event ) {
+                                       return $event->start() <= $this->now && $this->now <= $event->end();
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventrepositoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php  2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php    2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,9 +14,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> class Event_Repository implements Event_Repository_Interface {
</span><span class="cx" style="display: block; padding: 0 10px">        private const POST_TYPE = Translation_Events::CPT;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        protected DateTimeImmutable $now;
</ins><span class="cx" style="display: block; padding: 0 10px">         private Attendee_Repository $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function __construct( Attendee_Repository $attendee_repository ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct( DateTimeImmutable $now, Attendee_Repository $attendee_repository ) {
+               $this->now                 = $now;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->attendee_repository = $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -154,11 +156,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_current_events( int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 return $this->get_events_active_between(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $now,
-                       $now,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->now,
+                       $this->now,
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -166,10 +166,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_upcoming_events( int $page = - 1, int $page_size = - 1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -177,13 +176,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '>=',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'    => array( 'meta_value', 'ID' ),
-                               'order'      => 'ASC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'meta_key'   => '_event_start',
+                               'orderby'    => array(
+                                       'meta_value' => 'ASC',
+                                       'ID'         => 'ASC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:enable
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -190,10 +192,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_past_events( int $page = - 1, int $page_size = - 1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -201,13 +202,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_end',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '<',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'    => array( 'meta_value', 'ID' ),
-                               'order'      => 'DESC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'meta_key'   => '_event_end',
+                               'orderby'    => array(
+                                       'meta_value' => 'DESC',
+                                       'ID'         => 'DESC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:enable
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -225,6 +229,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -231,8 +236,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => array( 'publish', 'draft' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'    => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'     => 'meta_value',
-                               'order'       => 'DESC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'     => array(
+                                       'meta_value' => 'DESC',
+                                       'ID'         => 'DESC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -242,10 +249,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_current_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,20 +259,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '<=',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_end',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '>=',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'   => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'    => 'meta_value',
-                               'order'      => 'ASC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'    => array(
+                                       'meta_value' => 'ASC',
+                                       'ID'         => 'ASC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -275,10 +283,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_current_and_upcoming_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -286,14 +293,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_end',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '>',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'   => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'    => 'meta_value',
-                               'order'      => 'ASC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'    => array(
+                                       'meta_value' => 'ASC',
+                                       'ID'         => 'ASC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -302,10 +311,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_past_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -313,7 +321,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'key'     => '_event_end',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'value'   => $now->format( 'Y-m-d H:i:s' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'value'   => $this->now->format( 'Y-m-d H:i:s' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'compare' => '<',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -320,8 +328,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'   => '_event_start',
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_type'  => 'DATETIME',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'    => 'meta_value',
-                               'order'      => 'DESC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'    => array(
+                                       'meta_value' => 'DESC',
+                                       'ID'         => 'DESC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_id,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -332,6 +342,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_events_created_by_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result {
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,8 +350,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => array( 'publish', 'draft' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'author'      => $user_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'    => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'     => 'meta_value',
-                               'order'       => 'DESC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'     => array(
+                                       'meta_value' => 'DESC',
+                                       'ID'         => 'DESC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:enable
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -372,6 +385,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->execute_events_query(
</span><span class="cx" style="display: block; padding: 0 10px">                        $page,
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_size,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -378,8 +392,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => array( 'publish', 'draft' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'meta_key'    => '_event_start',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'orderby'     => 'meta_value',
-                               'order'       => 'DESC',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'orderby'     => array(
+                                       'meta_value' => 'DESC',
+                                       'ID'         => 'DESC',
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        $events_user_is_hosting_ids
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -402,12 +418,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_value
</ins><span class="cx" style="display: block; padding: 0 10px">                 $query_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'meta_query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'key'     => '_event_start',
</span><span class="cx" style="display: block; padding: 0 10px">                                        'value'   => $boundary_end->format( 'Y-m-d H:i:s' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'compare' => '<',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'compare' => '<=',
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'type'    => 'DATETIME',
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -419,7 +436,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'meta_key'   => '_event_start',
</span><span class="cx" style="display: block; padding: 0 10px">                        'meta_type'  => 'DATETIME',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'orderby'    => array( 'meta_value', 'ID' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'orderby'    => array(
+                               'meta_value' => 'ASC',
+                               'ID'         => 'ASC',
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px">                // phpcs:enable
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -460,6 +480,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        ): Events_Query_Result {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assert_pagination_arguments( $page, $page_size );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // A user who is not logged-in, does not have any events.
+               if ( 0 === $user_id ) {
+                       return new Events_Query_Result( array(), $page, 0 );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args = array_replace_recursive(
</span><span class="cx" style="display: block; padding: 0 10px">                        $args,
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludeseventeventphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php     2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event.php       2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,6 +6,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use DateTimeZone;
</span><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</span><span class="cx" style="display: block; padding: 0 10px"> use Throwable;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Wporg\TranslationEvents\Translation_Events;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class InvalidTimeZone extends Exception {
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct( Throwable $previous = null ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,7 +96,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function is_active(): bool {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $now = Translation_Events::now();
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $now >= $this->start->utc() && $now < $this->end->utc();
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesnotificationsnotificationsschedulephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-schedule.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-schedule.php    2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-schedule.php      2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,17 +2,21 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents\Notifications;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use DateTimeImmutable;
</ins><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event_Repository_Interface;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Notifications_Schedule {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private DateTimeImmutable $now;
</ins><span class="cx" style="display: block; padding: 0 10px">         private Event_Repository_Interface $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Notifications_Schedule constructor.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param Event_Repository_Interface $event_repository    Event repository.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param DateTimeImmutable          $now              The value of "now".
+        * @param Event_Repository_Interface $event_repository Event repository.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function __construct( Event_Repository_Interface $event_repository ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct( DateTimeImmutable $now, Event_Repository_Interface $event_repository ) {
+               $this->now              = $now;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->event_repository = $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -34,13 +38,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $args                  = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_id' => $post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $now                   = time();
</del><span class="cx" style="display: block; padding: 0 10px">                         $new_next_1h_schedule  = $event->start()->getTimestamp() - HOUR_IN_SECONDS;
</span><span class="cx" style="display: block; padding: 0 10px">                        $new_next_24h_schedule = $event->start()->getTimestamp() - 24 * HOUR_IN_SECONDS;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $new_next_1h_schedule > $now ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $new_next_1h_schedule > $this->now->getTimestamp() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 wp_schedule_single_event( $new_next_1h_schedule, 'wporg_gp_translation_events_email_notifications_1h', $args );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $new_next_24h_schedule > $now ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $new_next_24h_schedule > $this->now->getTimestamp() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 wp_schedule_single_event( $new_next_24h_schedule, 'wporg_gp_translation_events_email_notifications_24h', $args );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesnotificationsnotificationssendphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-send.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-send.php        2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/notifications/notifications-send.php  2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,7 +3,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents\Notifications;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> use DateTime;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use DateTimeImmutable;
</ins><span class="cx" style="display: block; padding: 0 10px"> use DateTimeZone;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Exception;
</ins><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Attendee\Attendee;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Attendee\Attendee_Repository;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15,17 +17,21 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        private Attendee_Repository $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        private Event_Repository_Interface $event_repository;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private DateTimeImmutable $now;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Notifications_Send constructor.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param DateTimeImmutable          $now                 The value of "now".
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param Event_Repository_Interface $event_repository    Event repository.
</span><span class="cx" style="display: block; padding: 0 10px">         * @param Attendee_Repository        $attendee_repository Attendee repository.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                DateTimeImmutable $now,
</ins><span class="cx" style="display: block; padding: 0 10px">                 Event_Repository_Interface $event_repository,
</span><span class="cx" style="display: block; padding: 0 10px">                Attendee_Repository $attendee_repository
</span><span class="cx" style="display: block; padding: 0 10px">        ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->now                 = $now;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->event_repository    = $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->attendee_repository = $attendee_repository;
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'wporg_gp_translation_events_email_notifications_1h', array( $this, 'send_notifications' ), 10, 1 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -38,7 +44,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int $post_id Post ID.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return void
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @throws \Exception
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @throws Exception
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function send_notifications( int $post_id ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $event = $this->event_repository->get_event( $post_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -152,8 +158,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        private function calculate_time_until_event( Event_Start_Date $start_date ): string {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now              = new DateTime( 'now', new DateTimeZone( 'UTC' ) );
-               $diff             = $start_date->diff( $now );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $diff             = $start_date->diff( $this->now );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $days_to_start    = $diff->days;
</span><span class="cx" style="display: block; padding: 0 10px">                $hours_to_start   = $diff->h;
</span><span class="cx" style="display: block; padding: 0 10px">                $minutes_to_start = $diff->i;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesattendeelistphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/attendee/list.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/attendee/list.php    2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/attendee/list.php      2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,7 +51,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-attendees',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'event-attendees',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'event'            => $event,
</span><span class="cx" style="display: block; padding: 0 10px">                                'attendees'        => $attendees,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventcreatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/create.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/create.php     2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/create.php       2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,6 +8,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event_End_Date;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event_Start_Date;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Routes\Route;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Wporg\TranslationEvents\Translation_Events;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Displays the event create page.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24,7 +25,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->die_with_error( 'You do not have permission to create events.', 403 );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $now = Translation_Events::now();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $event = new Event(
</span><span class="cx" style="display: block; padding: 0 10px">                        get_current_user_id(),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,10 +38,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-form',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'event-create',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'is_create_form' => true,
-                               'event'          => $event,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'event' => $event,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventdetailsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/details.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/details.php    2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/details.php      2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -86,7 +86,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'event',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'event-details',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'event'                      => $event,
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_is_attending'          => $user_is_attending,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventeditphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php       2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php 2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -36,10 +36,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                include ABSPATH . 'wp-admin/includes/post.php';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-form',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'event-edit',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'is_create_form' => false,
-                               'event'          => $event,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'event' => $event,
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventlisttrashedphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list-trashed.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list-trashed.php       2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list-trashed.php 2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,7 +41,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $trashed_events_query = $this->event_repository->get_trashed_events( $current_page, 10 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-list-trashed',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'trashed-events',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'trashed_events_query' => $trashed_events_query,
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventlistphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list.php       2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/list.php 2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,10 +2,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents\Routes\Event;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-use DateTime;
-use DateTimeZone;
-use Exception;
-use WP_Query;
</del><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event_Repository_Interface;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Routes\Route;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Translation_Events;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22,15 +18,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function handle(): void {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $current_datetime_utc = null;
-               try {
-                       $current_datetime_utc = ( new DateTime( 'now', new DateTimeZone( 'UTC' ) ) )->format( 'Y-m-d H:i:s' );
-               } catch ( Exception $e ) {
-                       // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
-                       error_log( $e );
-                       $this->die_with_error( esc_html__( 'Something is wrong.', 'gp-translation-events' ) );
-               }
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $_current_events_paged        = 1;
</span><span class="cx" style="display: block; padding: 0 10px">                $_upcoming_events_paged       = 1;
</span><span class="cx" style="display: block; padding: 0 10px">                $_past_events_paged           = 1;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -69,7 +56,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $user_attending_events_query = $this->event_repository->get_current_and_upcoming_events_for_user( get_current_user_id(), $_user_attending_events_paged, 10 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-list',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'home',
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'current_events_query'        => $current_events_query,
</span><span class="cx" style="display: block; padding: 0 10px">                                'upcoming_events_query'       => $upcoming_events_query,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesrouteseventtranslationsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/translations.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/translations.php       2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/translations.php 2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12,7 +12,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Templates;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Displays the event details page.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Displays the event translations page.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Translations_Route extends Route {
</span><span class="cx" style="display: block; padding: 0 10px">        private Event_Repository_Interface $event_repository;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,7 +59,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $projects[ $ts->translation_set_id ] = GP::$project->get( $ts->project_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                Templates::render( 'event-translations-header', get_defined_vars() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         Templates::render( 'translations/header', get_defined_vars() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $translation_sets as $ts ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $rows = $wpdb->get_results(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,9 +171,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $translations[ $row->row_id ] = new Translation_Entry( (array) $row );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        Templates::render( 'translations', get_defined_vars() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 Templates::render( 'translations/table', get_defined_vars() );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                Templates::render( 'event-translations-footer', get_defined_vars() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         Templates::render( 'translations/footer', get_defined_vars() );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludesroutesusermyeventsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php   2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/user/my-events.php     2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,6 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Attendee\Attendee_Repository;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Event\Event_Repository_Interface;
</span><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Routes\Route;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use Wporg\TranslationEvents\Templates;
</ins><span class="cx" style="display: block; padding: 0 10px"> use Wporg\TranslationEvents\Translation_Events;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -50,8 +51,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $current_user_attendee_per_event = $this->attendee_repository->get_attendees_for_events_for_user( $event_ids, $user_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                Templates::use_new_design();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->tmpl(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'events-my-events',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'my-events',
</ins><span class="cx" style="display: block; padding: 0 10px">                         compact(
</span><span class="cx" style="display: block; padding: 0 10px">                                'events',
</span><span class="cx" style="display: block; padding: 0 10px">                                'current_user_attendee_per_event'
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventsincludestemplatesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php       2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/templates.php 2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,19 +3,46 @@
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Templates {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        private static bool $use_new_design = false;
+
+       public static function use_new_design( bool $also_in_production = false ): void {
+               if ( $also_in_production ) {
+                       // If it's enabled for production, it's also enabled for development, so it's always enabled.
+                       self::$use_new_design = true;
+               } else {
+                       // Only enable if new design has been explicitly enabled.
+                       self::$use_new_design = defined( 'TRANSLATION_EVENTS_NEW_DESIGN' ) && TRANSLATION_EVENTS_NEW_DESIGN;
+               }
+
+               if ( self::$use_new_design ) {
+                       wp_register_style(
+                               'translation-events-new-design-css',
+                               plugins_url( 'assets/css/new-design.css', __DIR__ ),
+                               array( 'dashicons' ),
+                               filemtime( __DIR__ . '/../assets/css/new-design.css' )
+                       );
+                       gp_enqueue_styles( 'translation-events-new-design-css' );
+               }
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public static function render( string $template, array $data = array() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                gp_tmpl_load( $template, $data, __DIR__ . '/../templates/' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $template_path = __DIR__ . '/../templates/';
+               if ( self::$use_new_design ) {
+                       $template_path = $template_path . 'new-design/';
+               }
+
+               gp_tmpl_load( $template, $data, $template_path );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public static function header( array $data ) {
-               self::partial( 'header', $data );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function header( array $data = array() ) {
+               self::part( 'header', $data );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function footer( array $data = array() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                self::partial( 'footer', $data );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         self::part( 'footer', $data );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public static function partial( string $template, array $data ) {
-               self::render( "partials/$template", $data );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function part( string $template, array $data ) {
+               self::render( "parts/$template", $data );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginswporggptranslationeventswporggptranslationeventsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php      2024-06-11 00:47:06 UTC (rev 13799)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/wporg-gp-translation-events.php        2024-06-11 13:39:11 UTC (rev 13800)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,6 +18,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace Wporg\TranslationEvents;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use DateTimeImmutable;
+use DateTimeZone;
</ins><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</span><span class="cx" style="display: block; padding: 0 10px"> use GP;
</span><span class="cx" style="display: block; padding: 0 10px"> use GP_Locales;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,10 +49,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return $instance;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public static function now(): DateTimeImmutable {
+               static $now = null;
+               if ( null === $now ) {
+                       $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) );
+               }
+               return $now;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public static function get_event_repository(): Event_Repository_Interface {
</span><span class="cx" style="display: block; padding: 0 10px">                static $event_repository = null;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( null === $event_repository ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $event_repository = new Event_Repository_Cached( self::get_attendee_repository() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $event_repository = new Event_Repository_Cached( self::now(), self::get_attendee_repository() );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                return $event_repository;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -92,6 +102,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->event_capabilities = new Event_Capabilities(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        self::now(),
</ins><span class="cx" style="display: block; padding: 0 10px">                         self::get_event_repository(),
</span><span class="cx" style="display: block; padding: 0 10px">                        self::get_attendee_repository(),
</span><span class="cx" style="display: block; padding: 0 10px">                        new Stats_Calculator()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -257,10 +268,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_translation_event_js() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_register_style( 'translation-events-css', plugins_url( 'assets/css/translation-events.css', __FILE__ ), array( 'dashicons' ), filemtime( __DIR__ . '/assets/css/translation-events.css' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                gp_enqueue_styles( 'translation-events-css' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $this->should_load_new_design() ) {
-                       wp_register_style( 'new-dotorg-design-css', plugins_url( 'assets/css/new-dotorg-design.css', __FILE__ ), array( 'dashicons' ), filemtime( __DIR__ . '/assets/css/new-dotorg-design.css' ) );
-                       gp_enqueue_styles( 'new-dotorg-design-css' );
-               }
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_register_script( 'translation-events-js', plugins_url( 'assets/js/translation-events.js', __FILE__ ), array( 'jquery', 'gp-common' ), filemtime( __DIR__ . '/assets/js/translation-events.js' ), false );
</span><span class="cx" style="display: block; padding: 0 10px">                gp_enqueue_script( 'translation-events-js' );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_localize_script(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -360,6 +367,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @throws Exception
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function add_active_events_current_user(): void {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( ! is_user_logged_in() ) {
+                       return;
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $event_repository            = self::get_event_repository();
</span><span class="cx" style="display: block; padding: 0 10px">                $user_attending_events_query = $event_repository->get_current_events_for_user( get_current_user_id() );
</span><span class="cx" style="display: block; padding: 0 10px">                $events                      = $user_attending_events_query->events;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -408,7 +419,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Send notifications for the events.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function send_notifications() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                new Notifications_Send( self::get_event_repository(), self::get_attendee_repository() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         new Notifications_Send( self::now(), self::get_event_repository(), self::get_attendee_repository() );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -433,14 +444,5 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                return $override_slug;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-       /**
-        * Check if the current site is a translate.wordpress.org or a development TLD.
-        *
-        * @return bool
-        */
-       private function should_load_new_design(): bool {
-               return defined( 'TRANSLATION_EVENTS_NEW_DESIGN' ) && TRANSLATION_EVENTS_NEW_DESIGN;
-       }
</del><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> Translation_Events::get_instance();
</span></span></pre>
</div>
</div>

</body>
</html>