<!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>[8085] sites/trunk/wordcamp.org: WCPT: Applies code standard changes to wcpt plugin.</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/8085">8085</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/8085","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>vedjain</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2019-01-16 15:36:24 +0000 (Wed, 16 Jan 2019)</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'>WCPT: Applies code standard changes to wcpt plugin.

Most of the changes are small, but these are some important ones:

1. Added nonce check in multiple places. This will ensure that request is always coming from the intended page.

2. Escaped output HTML in many places. These are not necessarily XSS vulnerabilities, and in most places they were hardcoded.  But its a good practice to always escape regardless of source.

Summary:
- wcpt-event/class-event-admin.php
  - Added nonce check in `metabox_save`.
  - Escaped output in `dislpay_meta_boxes`

- wcpt-event/class-event-application.php
  - Change definition of submit_application to pass `$POST` arguments

- wcpt-loader.php
  - Indent whole file by 1 indent.

- wcpt-meetup/class-meetup-admin.php
  - Added nonce check in `maybe_update_meetup_data`

- wcpt-wordcamp/wordcamp-admin.php
  - Escaping in `user_profile_wordcamp`, `column_data`
  - Escaping using kses in `post_row_actions`
  - Use post_data_raw instead of $_POST in `enforce_post_status`</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordcamporgphpcsxmldist">sites/trunk/wordcamp.org/phpcs.xml.dist</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationsmeetupshortcodeapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationswordcampshortcodeapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventnotificationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/notification.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptloaderphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetupphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampclasswordcampapplicationphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php</a></li>
<li><a href="#sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampadminphp">sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordcamporgphpcsxmldist"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/phpcs.xml.dist</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/phpcs.xml.dist   2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/phpcs.xml.dist     2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -154,6 +154,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <!-- Class comments are generally not useful, so they're left out, but then PHPCS confuses the plugin headers for a class comment -->
</span><span class="cx" style="display: block; padding: 0 10px">                <exclude name="Squiz.Commenting.ClassComment.WrongStyle" />
</span><span class="cx" style="display: block; padding: 0 10px">                <exclude name="Squiz.Commenting.ClassComment.SpacingAfter" />
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               <!-- WordPress have translators comment which requires no space after `//` -->
+               <exclude name="Squiz.Commenting.InlineComment.NoSpaceBefore" />
</ins><span class="cx" style="display: block; padding: 0 10px">         </rule>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <rule ref="WordPress-Extra">
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationsmeetupshortcodeapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php  2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/meetup/shortcode-application.php    2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,7 +1,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPress_Community\Applications\Meetup;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-defined( 'WPINC' ) or die();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+defined( 'WPINC' ) || die();
</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">  * Renders the application form for meetup. Renders shortcode meetup-organizer-application
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -149,4 +149,4 @@
</span><span class="cx" style="display: block; padding: 0 10px">        </form>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptviewsapplicationswordcampshortcodeapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php        2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/views/applications/wordcamp/shortcode-application.php  2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,7 +1,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPress_Community\Applications\WordCamp;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-defined( 'WPINC' ) or die();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+defined( 'WPINC' ) || die();
</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">@@ -1481,4 +1481,4 @@
</span><span class="cx" style="display: block; padding: 0 10px">        </form>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php     2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-admin.php       2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,7 +41,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'manage_' . $this->get_event_type() . '_posts_columns', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'manage_' . $this->get_event_type() . '_posts_columns',
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $this,
</span><span class="cx" style="display: block; padding: 0 10px">                                'column_headers',
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,7 +60,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'redirect_post_location', array( $this, 'add_admin_notices_to_redirect_url' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Admin notices
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Admin notices.
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'admin_notices', array( $this, 'print_admin_notices' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'send_decline_notification_action',  'Event_Admin::send_decline_notification', 10, 3 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -268,14 +269,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $new_status = get_post_status_object( $new_status );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $log_id = add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post->ID, '_status_change', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post->ID,
+                       '_status_change',
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'timestamp' => time(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'   => get_current_user_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'message'   => sprintf( '%s &rarr; %s', $old_status->label, $new_status->label ),
</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">-                // Encoding $post_type and status_change meta ID in key so that we can fetch it if needed while simultaneously be able to have a where clause on value
-               // Because of the way MySQL works, it will still be able to use index on meta_key when searching, as long as we are querying just the prefix
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Encoding $post_type and status_change meta ID in key so that we can fetch it if needed while simultaneously be able to have a where clause on value.
+               // Because of the way MySQL works, it will still be able to use index on meta_key when searching, as long as we are querying just the prefix.
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $log_id ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        add_post_meta( $post->ID, "_status_change_log_$post->post_type $log_id", time() );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -284,8 +287,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Hooked to `transition_post_status`, will send notifications to community slack channels based whenever an application status changes to something that we are interested in. Most likely would be when an application is declined or accepted.
</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 string  $new_status New status
-        * @param string  $old_status Old Status
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string  $new_status New status.
+        * @param string  $old_status Old Status.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param WP_Post $event
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        abstract public function notify_application_status_in_slack( $new_status, $old_status, WP_Post $event );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -293,11 +296,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Schedule notificaiton for declined application. Currently supports WordCamp and Meetup
</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 WP_Post $event Event object
-        * @param string  $label Could be WordCamp or Meetup
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param WP_Post $event Event object.
+        * @param string  $label Could be WordCamp or Meetup.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param string  $location
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         *
-        * @return bool|string
</del><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function schedule_decline_notification( $event, $label, $location ) {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_schedule_single_event( time() + DAY_IN_SECONDS, 'send_decline_notification_action', array( $event->ID, $label, $location ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -312,7 +313,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function send_decline_notification( $event_id, $label, $location ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $message = sprintf(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        "A %s application for %s has been declined, and the applicant has been informed via email.",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'A %s application for %s has been declined, and the applicant has been informed via email.',
</ins><span class="cx" style="display: block; padding: 0 10px">                         $label,
</span><span class="cx" style="display: block; padding: 0 10px">                        $location
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -344,9 +345,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $gutenberg_enabled = 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">-                wp_localize_script( 'wcpt-admin', 'wcpt_admin', array(
-                       'gutenberg_enabled' => $gutenberg_enabled,
-               ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp_localize_script(
+                       'wcpt-admin',
+                       'wcpt_admin',
+                       array( 'gutenberg_enabled' => $gutenberg_enabled )
+               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_enqueue_script( 'wcpt-admin' );
</span><span class="cx" style="display: block; padding: 0 10px">                wp_enqueue_script( 'select2' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -401,8 +404,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Save metadata from form
</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 int     $post_id Post ID.
-        * @param WP_Post $post    Post Object.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @hook save_post
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function metabox_save( $post_id, $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // Don't add/remove meta on revisions and auto-saves.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -410,6 +412,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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">+                // Make sure the requset came from the edit post screen.
+               if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_' . $post_id ) ) {
+                       die( 'Unable to verify nonce' );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Don't add/remove meta on trash, untrash, restore, etc.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $_POST['action'] ) || 'editpost' !== $_POST['action'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -419,11 +426,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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">-                // Make sure the requset came from the edit post screen.
-               if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_' . $post_id ) ) {
-                       return;
-               }
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $meta_keys = $this->meta_keys();
</span><span class="cx" style="display: block; padding: 0 10px">                $orig_meta_values = get_post_meta( $post_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -431,7 +433,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_value     = wcpt_key_to_str( $key, 'wcpt_' );
</span><span class="cx" style="display: block; padding: 0 10px">                        $values[ $key ] = isset( $_POST[ $post_value ] ) ? esc_attr( $_POST[ $post_value ] ) : '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Don't update protected fields
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Don't update protected fields.
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( $this->is_protected_field( $key ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                continue;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -476,6 +478,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"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // TODO: This should also pass $_POST params since nonce is verified here.
</ins><span class="cx" style="display: block; padding: 0 10px">                 do_action( 'wcpt_metabox_save_done', $post_id, $orig_meta_values );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->validate_and_add_note( $post_id );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -499,7 +502,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $location = add_query_arg( 'wcpt_messages', implode( ',', $this->active_admin_notices ), $location );
</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">-                // Don't show conflicting messages like 'Post submitted.'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Don't show conflicting messages like 'Post submitted'.
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( in_array( 1, $this->active_admin_notices ) && false !== strpos( $location, 'message=8' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $location = remove_query_arg( 'message', $location );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -526,7 +529,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                global $post;
</span><span class="cx" style="display: block; padding: 0 10px">                $screen = get_current_screen();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 if ( empty( $post->post_type ) || $this->get_event_type() != $post->post_type || 'post' !== $screen->base ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -569,9 +571,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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">-                // Note that this is private, see wcpt_get_log_entries()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Note that this is private, see `wcpt_get_log_entries()`.
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_id, '_note', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_id,
+                       '_note',
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'timestamp' => time(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'   => get_current_user_id(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'message'   => $new_note_message,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -605,23 +609,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php if ( 'checkbox' == $value ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        <p>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <strong><?php echo $key; ?></strong>:
-                                               <input type="checkbox" name="<?php echo $object_name; ?>"
-                                                          id="<?php echo $object_name; ?>" <?php checked( get_post_meta( $post_id, $key, true ) ); ?><?php echo $readonly; ?> />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <strong><?php echo esc_html( $key ); ?></strong>:
+                                               <input type="checkbox" name="<?php echo esc_attr( $object_name ); ?>"
+                                                          id="<?php echo esc_attr( $object_name ); ?>" <?php checked( get_post_meta( $post_id, $key, true ) ); ?><?php echo esc_attr( $readonly ); ?> />
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php else : ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        <p>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <strong><?php echo $key; ?></strong>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <strong><?php echo esc_html( $key ); ?></strong>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 <?php if ( in_array( $key, $required_fields, true ) ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <span class="description"><?php _e( '(required)', 'wordcamporg' ); ?></span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <span class="description"><?php esc_html_e( '(required)', 'wordcamporg' ); ?></span>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        <p>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <label class="screen-reader-text"
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                           for="<?php echo $object_name; ?>"><?php echo $key; ?></label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                    for="<?php echo esc_attr( $object_name ); ?>"><?php echo esc_html( $key ); ?></label>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                switch ( $value ) :
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -628,9 +632,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'text':
</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">-                                                                <input type="text" size="36" name="<?php echo $object_name; ?>"
-                                                                          id="<?php echo $object_name; ?>"
-                                                                          value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"<?php echo $readonly; ?> />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <input type="text" size="36" name="<?php echo esc_attr( $object_name ); ?>"
+                                                                          id="<?php echo esc_attr( $object_name ); ?>"
+                                                                          value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"<?php echo esc_attr( $readonly ); ?> />
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -637,24 +641,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'number':
</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">-                                                                <input type="number" size="16" name="<?php echo $object_name; ?>"
-                                                                          id="<?php echo $object_name; ?>"
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <input type="number" size="16" name="<?php echo esc_attr( $object_name ); ?>"
+                                                                          id="<?php echo esc_attr( $object_name ); ?>"
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                            value="<?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?>"
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                           step="any" min="0"<?php echo $readonly; ?> />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                    step="any" min="0"<?php echo esc_attr( $readonly ); ?> />
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'date':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                // Quick filter on dates
-                                                               if ( $date = get_post_meta( $post_id, $key, true ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         // Quick filter on dates.
+                                                               $date = get_post_meta( $post_id, $key, true );
+                                                               if ( $date ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         $date = date( 'Y-m-d', $date );
</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><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <input type="text" size="36" class="date-field" name="<?php echo $object_name; ?>"
-                                                                          id="<?php echo $object_name; ?>"
-                                                                          value="<?php echo $date; ?>"<?php echo $readonly; ?> />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <input type="text" size="36" class="date-field" name="<?php echo esc_attr( $object_name ); ?>"
+                                                                          id="<?php echo esc_attr( $object_name ); ?>"
+                                                                          value="<?php echo esc_attr( $date ); ?>"<?php echo esc_attr( $readonly ); ?> />
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -661,8 +666,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'textarea':
</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">-                                                                <textarea rows="4" cols="23" name="<?php echo $object_name; ?>"
-                                                                                 id="<?php echo $object_name; ?>"<?php echo $readonly; ?>><?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?></textarea>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <textarea rows="4" cols="23" name="<?php echo esc_attr( $object_name ); ?>"
+                                                                                 id="<?php echo esc_attr( $object_name ); ?>"<?php echo esc_attr( $readonly ); ?>><?php echo esc_attr( get_post_meta( $post_id, $key, true ) ); ?></textarea>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -674,8 +679,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                if ( $readonly ) :
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        $value = get_post_meta( $post_id, $key, true );
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <select name="<?php echo $object_name; ?>"
-                                                                               id="<?php echo $object_name; ?>"<?php echo $readonly; ?>>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <select name="<?php echo esc_attr( $object_name ); ?>"
+                                                                               id="<?php echo esc_attr( $object_name ); ?>"<?php echo esc_attr( $readonly ); ?>>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         <option value="<?php echo esc_attr( $value ); ?>" selected>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                <?php echo ( $value ) ? esc_html( $currencies[ $value ] . ' (' . $value . ')' ) : ''; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        </option>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -695,16 +700,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'deputy_list':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                wp_dropdown_users( array(
-                                                                       'role__in'         => array(
-                                                                               'administrator',
-                                                                               'editor',
-                                                                       ),
-                                                                       'name'             => esc_attr( $object_name ),
-                                                                       'id'               => esc_attr( $object_name ),
-                                                                       'selected'         => get_post_meta( $post_id, $key, true ),
-                                                                       'show_option_none' => 'None',
-                                                               ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         wp_dropdown_users(
+                                                                       array(
+                                                                               'role__in'         => array(
+                                                                                       'administrator',
+                                                                                       'editor',
+                                                                               ),
+                                                                               'name'             => esc_attr( $object_name ),
+                                                                               'id'               => esc_attr( $object_name ),
+                                                                               'selected'         => get_post_meta( $post_id, $key, true ),
+                                                                               'show_option_none' => 'None',
+                                                                       )
+                                                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 break;
</span><span class="cx" style="display: block; padding: 0 10px">                                                        default:
</span><span class="cx" style="display: block; padding: 0 10px">                                                                do_action( 'wcpt_metabox_value', $key, $value, $object_name );
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventclasseventapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php       2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/class-event-application.php 2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -52,7 +52,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">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Render the output the of the [meetup-organizer-application] shortcode.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Render the output the of the application forms shortcode.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @todo Use force_login_to_view_form() and populate_form_based_on_user().
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -61,8 +61,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function render_application_shortcode() {
</span><span class="cx" style="display: block; padding: 0 10px">                ob_start();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // phpcs:ignore WordPress.Security.NonceVerification.Missing -- We do not verify nonce for frontend forms because WP Super Cache may cache an expired nonce token.
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $_POST['submit-application'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->submit_application();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->submit_application( $_POST );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $countries = wcorg_get_countries();
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->render_application_form( $countries );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,9 +83,11 @@
</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">         * Submit application details. Calls `create_post` to actually create the event.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         *
+        * @param array $post_data Form params.
</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 submit_application() {
-               $application_data = $this->validate_data( $_POST );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function submit_application( $post_data ) {
+               $application_data = $this->validate_data( $post_data );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $this->is_rate_limited() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $message        = __( 'You have submitted too many applications recently. Please wait and try again in a few hours.', 'wordcamporg' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,8 +98,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->create_post( $application_data );
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->notify_applicant_application_received(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $this->get_organizer_email(),
-                                       $this->get_event_location()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $this->get_organizer_email(),
+                               $this->get_event_location()
</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">                        $this->notify_new_application_in_slack();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -222,10 +225,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                //translators: Name and city of the event. Egs WordCamp in New York.
</span><span class="cx" style="display: block; padding: 0 10px">                $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                        __(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                "Thank you for applying to organize a %s in %s! We'll send you a follow-up e-mail once we've had a chance to review your application.",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         "Thank you for applying to organize a %1\$s in %2\$s! We'll send you a follow-up e-mail once we've had a chance to review your application.",
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'wpct'
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->get_event_label(), sanitize_text_field( $event_city )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->get_event_label(),
+                       sanitize_text_field( $event_city )
</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">                wp_mail( $email_address, $subject, $message, $headers );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -237,26 +241,27 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function notify_new_application_in_slack() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Not translating because this will be sent to community events slack channel.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $message = sprintf( "A %s application for %s has been received.", $this->get_event_label(), $this->get_event_location() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $message = sprintf( 'A %s application for %s has been received.', $this->get_event_label(), $this->get_event_location() );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $public_report_url = $this->get_application_report_url();
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $public_report_url ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        // `<%s|here> is syntax for slack message to hyperlink text `here` with url provided in `%s`
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $message = sprintf( "%s Public status can be followed on <%s|%s application report page>.", $message, $public_report_url, $this->get_event_label() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $message = sprintf( '%s Public status can be followed on <%s|%s application report page>.', $message, $public_report_url, $this->get_event_label() );
</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">                $default_status = $this->get_default_status();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $queue_size = wp_count_posts( $post_type=$this->get_event_type() )->$default_status;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $queue_size = wp_count_posts( $this->get_event_type() )->$default_status;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $queue_size ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $singular = "is $queue_size application";
</span><span class="cx" style="display: block; padding: 0 10px">                        $plural   = "are $queue_size applications";
</span><span class="cx" style="display: block; padding: 0 10px">                        $message = sprintf(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        "%s\n _There %s in vetting queue._",
-                                       $message,
-                                       1 === $queue_size ? $singular : $plural );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         "%s\n _There %s in vetting queue._",
+                               $message,
+                               1 === $queue_size ? $singular : $plural
+                       );
</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">-                $attachment = create_event_attachment( $message,  sprintf( "New %s application ", $this->get_event_label() ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $attachment = create_event_attachment( $message,  sprintf( 'New %s application ', $this->get_event_label() ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 return wcpt_slack_notify( COMMUNITY_TEAM_SLACK, $attachment );
</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="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcpteventnotificationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/notification.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/notification.php  2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-event/notification.php    2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,11 +4,11 @@
</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"> if ( defined( 'WPORG_SANDBOXED' ) && WPORG_SANDBOXED ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        // If this is sandbox and then send notification of owner of sandbox (as long as sandbox username and slack username matches)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // If this is sandbox and then send notification of owner of sandbox (as long as sandbox username and slack username matches).
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( defined( 'SANDBOX_SLACK_USERNAME' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $slack_username = SANDBOX_SLACK_USERNAME;
</span><span class="cx" style="display: block; padding: 0 10px">        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $slack_username = "@" . str_replace( array( '.dev.ord', '.dev' ), '', WPORG_SANDBOXED );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $slack_username = '@' . str_replace( array( '.dev.ord', '.dev' ), '', WPORG_SANDBOXED );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">        define( 'COMMUNITY_TEAM_SLACK', $slack_username );
</span><span class="cx" style="display: block; padding: 0 10px">        define( 'COMMUNITY_EVENTS_SLACK', $slack_username );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21,11 +21,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Send attachment to Make WordPress slack. Will be used to send event notifications to community channels
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @param string $channel Name of the channel we want to send the notification to.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param array  $attachment Attachment object
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param array  $attachment Attachment object.
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @return bool|string
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wcpt_slack_notify ( $channel, $attachment ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wcpt_slack_notify( $channel, $attachment ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( ! class_exists( 'Dotorg\Slack\Send' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                return false;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,27 +43,38 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Creates attachment that can be sent using slack notification.
</span><span class="cx" style="display: block; padding: 0 10px">  * See the structure of attachment here: https://api.slack.com/docs/message-attachments
</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 string $message Main text to send in the notification
- * @param string $event_label Label for the event. Would probably be one of `WordCamp` or `Meetup`.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param string $message Main text to send in the notification.
+ * @param string $title   Title of the notification.
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @return array
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function create_event_attachment ( $message, $title ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function create_event_attachment( $message, $title ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         // Not translating because this will be send to Slack.
</span><span class="cx" style="display: block; padding: 0 10px">        return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                "title" => $title,
-               "text" => $message,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'title' => $title,
+               'text'  => $message,
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Returns an attachment object to customize notification for slack.
+ * See https://api.slack.com/docs/message-attachments
+ *
+ * @param string $message  Text that should be in the attachment.
+ * @param int    $event_id Post ID of the event. Will be used to gather props.
+ * @param string $title    TItle of the message.
+ *
+ * @return array
+ */
</ins><span class="cx" style="display: block; padding: 0 10px"> function create_event_status_attachment( $message, $event_id, $title ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $props = get_props_for_event( $event_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">-        $props_string = implode( ", ", $props );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $props_string = implode( ', ', $props );
+
</ins><span class="cx" style="display: block; padding: 0 10px">         return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                "title" => $title,
-               "text" => $message,
-               "fields" => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'title'  => $title,
+               'text'   => $message,
+               'fields' => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         array(
</span><span class="cx" style="display: block; padding: 0 10px">                                "title" => "Application processed by",
</span><span class="cx" style="display: block; padding: 0 10px">                                "value" => $props_string,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -81,7 +92,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @return array Array of usernames of people who have participated in vetting this application
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function get_props_for_event ( $event_id ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function get_props_for_event( $event_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         $user_ids = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $status_change_logs = get_post_meta( $event_id, '_status_change' ) ?? array();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -96,7 +107,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $user_nicenames = get_user_nicenames_from_ids( $user_ids );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        // remove bot user `wordcamp`
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // remove bot user `wordcamp`.
</ins><span class="cx" style="display: block; padding: 0 10px">         $user_nicenames = array_diff( $user_nicenames, array( 'wordcamp' ) );
</span><span class="cx" style="display: block; padding: 0 10px">        return $user_nicenames;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,7 +115,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Return user names for list of user ids provided in the function
</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 array $user_ids List of user_ids
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param array $user_ids List of user_ids.
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @return array List of user nicenames
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,7 +124,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return array();
</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">-        $user_query = new WP_User_Query( array( 'include' => $user_ids, 'fields'  => array( 'user_nicename' ), ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $user_query = new WP_User_Query(
+               array(
+                       'include' => $user_ids,
+                       'fields'  => array( 'user_nicename' ),
+               )
+       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $users = $user_query->get_results();
</span><span class="cx" style="display: block; padding: 0 10px">        $user_display_names = array();
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php      2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-loader.php        2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,4 +1,5 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> /*
</span><span class="cx" style="display: block; padding: 0 10px"> Plugin Name: WordCamp Post Type
</span><span class="cx" style="display: block; padding: 0 10px"> Plugin URI: http://wordcamp.org
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17,78 +18,78 @@
</span><span class="cx" style="display: block; padding: 0 10px"> define( 'WCPT_DIR', plugin_dir_path( __FILE__ ) );
</span><span class="cx" style="display: block; padding: 0 10px"> define( 'WCPT_URL', plugins_url( '/', __FILE__ ) );
</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 ( !class_exists( 'WCPT_Loader' ) ) :
-/**
- * WCPT_Loader
- *
- * @package
- * @subpackage Loader
- * @since WordCamp Post Type (0.1)
- *
- */
-class WCPT_Loader {
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+if ( ! class_exists( 'WCPT_Loader' ) ) :
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * The main WordCamp Post Type loader
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * WCPT_Loader
+        *
+        * @package
+        * @subpackage Loader
+        * @since WordCamp Post Type (0.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">-        function __construct() {
-               add_action( 'plugins_loaded', array( $this, 'core_admin' ) );
-               add_action( 'init', array( $this, 'core_text_domain' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ class WCPT_Loader {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->includes();
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * The main WordCamp Post Type loader
+                */
+               public function __construct() {
+                       add_action( 'plugins_loaded', array( $this, 'core_admin' ) );
+                       add_action( 'init', array( $this, 'core_text_domain' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * WordCamp Core File Includes
-        */
-       function includes() {
-               // Load the files
-               require_once ( WCPT_DIR . 'wcpt-functions.php' );
-               require_once ( WCPT_DIR . 'wcpt-wordcamp/wordcamp-loader.php' );
-               require_once ( WCPT_DIR . 'wcpt-meetup/meetup-loader.php' );
-               require_once ( WCPT_DIR . 'wcpt-event/tracker.php' );
-               require_once ( WCPT_DIR . 'wcpt-wordcamp/wordcamp.php' );
-               require_once ( WCPT_DIR . 'wcpt-meetup/meetup.php' );
-               require_once ( WCPT_DIR . 'wcpt-meetup/class-meetup-admin.php' );
-               require_once ( WCPT_DIR . 'wcpt-event/class-event-admin.php' ); // required for declined application cron to work.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->includes();
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Require admin files.
-               if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
-                       require_once ( WCPT_DIR . 'wcpt-admin.php' );
-                       require_once ( WCPT_DIR . 'wcpt-wordcamp/wordcamp-admin.php' );
-                       require_once ( WCPT_DIR . 'wcpt-wordcamp/privacy.php' );
-                       require_once ( WCPT_DIR . 'mentors/dashboard.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * WordCamp Core File Includes
+                */
+               public function includes() {
+                       // Load the files.
+                       require_once( WCPT_DIR . 'wcpt-functions.php' );
+                       require_once( WCPT_DIR . 'wcpt-wordcamp/wordcamp-loader.php' );
+                       require_once( WCPT_DIR . 'wcpt-meetup/meetup-loader.php' );
+                       require_once( WCPT_DIR . 'wcpt-event/tracker.php' );
+                       require_once( WCPT_DIR . 'wcpt-wordcamp/wordcamp.php' );
+                       require_once( WCPT_DIR . 'wcpt-meetup/meetup.php' );
+                       require_once( WCPT_DIR . 'wcpt-meetup/class-meetup-admin.php' );
+                       require_once( WCPT_DIR . 'wcpt-event/class-event-admin.php' ); // required for declined application cron to work.
+
+                       // Require admin files.
+                       if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
+                               require_once( WCPT_DIR . 'wcpt-admin.php' );
+                               require_once( WCPT_DIR . 'wcpt-wordcamp/wordcamp-admin.php' );
+                               require_once( WCPT_DIR . 'wcpt-wordcamp/privacy.php' );
+                               require_once( WCPT_DIR . 'mentors/dashboard.php' );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function core_admin() {
-               // Quick admin check
-               if ( ! is_admin() && ( ! defined( 'DOING_CRON' ) || ! DOING_CRON ) ) {
-                       return;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Initialize core admin objects
+                */
+               public function core_admin() {
+                       // Quick admin check.
+                       if ( ! is_admin() && ( ! defined( 'DOING_CRON' ) || ! DOING_CRON ) ) {
+                               return;
+                       }
+
+                       // Create admin.
+                       $GLOBALS['wcpt_admin']     = new WCPT_Admin();
+                       $GLOBALS['wordcamp_admin'] = new WordCamp_Admin();
+                       $GLOBALS['meetup_admin']   = new Meetup_Admin();
</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">-                // Create admin
-               $GLOBALS['wcpt_admin'] = new WCPT_Admin;
-               $GLOBALS['wordcamp_admin'] = new WordCamp_Admin;
-               $GLOBALS['meetup_admin'] = new Meetup_Admin();
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /**
+                * Load the translation file for current language
+                */
+               public function core_text_domain() {
+                       $locale = apply_filters( 'wcpt_textdomain', get_locale() );
+                       $mofile = WCPT_DIR . "wcpt-languages/wcpt-$locale.mo";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * core_text_domain ()
-        *
-        * Load the translation file for current language
-        */
-       function core_text_domain() {
-               $locale = apply_filters( 'wcpt_textdomain', get_locale() );
-               $mofile = WCPT_DIR . "wcpt-languages/wcpt-$locale.mo";
-
-               load_textdomain( 'wcpt', $mofile );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 load_textdomain( 'wcpt', $mofile );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-endif; // class_exists check
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+endif; // class_exists check.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-// Load everything up
-$wcpt_loader     = new WCPT_Loader;
-$wordcamp_loader = new WordCamp_Loader;
-$meetup_loader = new Meetup_Loader();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// Load everything up.
+$wcpt_loader     = new WCPT_Loader();
+$wordcamp_loader = new WordCamp_Loader();
+$meetup_loader   = new Meetup_Loader();
</ins></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php   2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-admin.php     2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -119,6 +119,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">                 * Checks if a field is read only.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 *
</ins><span class="cx" style="display: block; padding: 0 10px">                  * @param string $key Name of the field.
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return bool Whether `$key` is a protected field.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -167,8 +168,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * TODO: Remove quickedit action.
</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 $actions
-                * @param $post
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param array   $actions
+                * @param WP_Post $post
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return mixed
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -295,16 +296,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( empty( $last_synced_on ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $last_synced_on = 'Never';
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $last_synced_on = date( "Y-m-d",  substr( $last_synced_on, 0, 10 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $last_synced_on = date( 'Y-m-d',  substr( $last_synced_on, 0, 10 ) );
</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">                        <div class="wcb submitbox">
</span><span class="cx" style="display: block; padding: 0 10px">                                <div class="misc-pub-section">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <label>Last sync: <?php echo $last_synced_on ?></label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <label>Last sync: <?php echo esc_html( $last_synced_on ); ?></label>
</ins><span class="cx" style="display: block; padding: 0 10px">                                 </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                <div class="misc-pub-section">
</span><span class="cx" style="display: block; padding: 0 10px">                                        <label>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <input type="checkbox" name="<?php echo $element_name ?>" >
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <input type="checkbox" name="<?php echo esc_html( $element_name ); ?>" >
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 Sync Now
</span><span class="cx" style="display: block; padding: 0 10px">                                        </label>
</span><span class="cx" style="display: block; padding: 0 10px">                                </div>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -315,15 +316,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Updates meetup fields using meetup.com API only if Sync now checkbox is checked.
</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 int   $post_id
-                * @param array $original_meta_values
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param int $post_id
</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 maybe_update_meetup_data( $post_id ){
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function maybe_update_meetup_data( $post_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( $this->get_event_type() !== get_post_type() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</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">-                        $should_sync = $_POST[ 'sync_with_meetup_api' ] ?? false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 //phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verified in `metabox_save` in class-event-admin.php.
+                       $should_sync = $_POST['sync_with_meetup_api'] ?? false;
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( ! $should_sync ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,7 +340,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Update meetup fields using meetup.com API
</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 $post_id
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param int $post_id
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array|WP_Error
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -349,7 +350,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $parsed_url = wp_parse_url( $meetup_url, -1 );
</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( ! $parsed_url ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $parsed_url ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return new WP_Error( 'invalid-url', __('Provided Meetup URL is not a valid URL.', 'wordcamporg' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        $url_path_segments = explode( '/', rtrim( $parsed_url['path'], '/' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -390,12 +391,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( isset( $group_leads ) && is_array( $group_leads ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $group_leads as $event_host ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( WCPT_WORDPRESS_MEETUP_ID === $event_host['id'] ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                // Skip WordPress admin user
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // Skip WordPress admin user.
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 continue;
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                        $event_hosts[] = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        'name' => $event_host['name'],
-                                                       'id'   => $event_host['id'],
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'name' => $event_host['name'],
+                                               'id'   => $event_host['id'],
</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">@@ -405,7 +406,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        update_post_meta( $post_id, 'Meetup members count', $group_details['members'] );
</span><span class="cx" style="display: block; padding: 0 10px">                        update_post_meta( $post_id, 'Meetup group created on', $group_details['created'] / 1000 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                         if ( isset( $group_details['last_event'] ) && is_array( $group_details['last_event'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                update_post_meta( $post_id, 'Number of past meetups', $group_details['past_event_count'] );
</span><span class="cx" style="display: block; padding: 0 10px">                                update_post_meta( $post_id, 'Last meetup on', $group_details['last_event']['time'] / 1000 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -422,7 +422,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param int   $post_id
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param array $original_data
</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 meetup_organizers_changed( $post_id, $original_data ){
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function meetup_organizers_changed( $post_id, $original_data ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         global $post;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->get_event_type() !== get_post_type() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -508,7 +508,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Send notification when a new Meetup groups is added to the chapter.
</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 WP_Post $meetup Meetup post object
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param WP_Post $meetup Meetup post object.
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return bool|string
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -518,7 +518,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $city            = get_post_meta( $meetup->ID, 'Meetup Location', true );
</span><span class="cx" style="display: block; padding: 0 10px">                        $organizer_slack = get_post_meta( $meetup->ID, 'Slack', true );
</span><span class="cx" style="display: block; padding: 0 10px">                        $meetup_link     = get_post_meta( $meetup->ID, 'Meetup URL', true );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $title           = "New meetup group added";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $title           = 'New meetup group added';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                "Let's welcome the new WordPress meetup group%s%s, to the chapter! :tada: :community: :wordpress:\n%s",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -556,8 +556,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Helper method which triggers action `update_meetup_organizers`
</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 $organizers
-                * @param $post
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param array   $organizers
+                * @param WP_Post $post
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><span class="cx" style="display: block; padding: 0 10px">                protected function update_meetup_organizers( $organizers, $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! empty( $organizers ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -579,15 +579,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'invalid-response'   => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'type'   => 'notice',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'notice' => __( 'Received invalid response from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'notice' => __( 'Received invalid response from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'group_error'        => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'type'   => 'notice',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'notice' => __( 'Received invalid response from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'notice' => __( 'Received invalid response from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'http_response_code' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'type'   => 'notice',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'notice' => __( 'Received invalid response code from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'notice' => __( 'Received invalid response code from Meetup API. Please make sure Meetup URL is correct, or try again after some time.', 'wordcamporg' ),
</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">@@ -596,7 +596,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Render list of co-organizer of meetup linking to their profile on meetup.com
</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 string $key Name of meetup field. Should be 'Meetup Co-organizer names'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $key Name of meetup field. Should be 'Meetup Co-organizer names'.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><span class="cx" style="display: block; padding: 0 10px">                public function render_co_organizers_list( $key ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        global $post_id;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -604,9 +604,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        $organizers = get_post_meta( $post_id, $key, true );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( isset ( $organizers ) && is_array( $organizers ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $organizers ) && is_array( $organizers ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $group_slug = get_post_meta( $post_id, 'Meetup URL', true );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( empty ( $group_slug ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( empty( $group_slug ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         echo 'Invalid Meetup Group URL';
</span><span class="cx" style="display: block; padding: 0 10px">                                        return;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -624,7 +624,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                echo '</ul>';
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                echo __( 'No meetup organizers set.', 'wordcamp.org' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         esc_html_e( 'No meetup organizers set.', 'wordcamp.org' );
</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">@@ -741,12 +741,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * Cron worker for syncing with Meetup.com API data
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                public static function meetup_api_sync() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $query = new WP_Query( array(
-                               'post_type'   => self::get_event_type(),
-                               'post_status' => 'wcpt-mtp-active',
-                               'fields'      => 'ids',
-                               'posts_per_page' => -1,
-                       ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $query = new WP_Query(
+                               array(
+                                       'post_type'      => self::get_event_type(),
+                                       'post_status'    => 'wcpt-mtp-active',
+                                       'fields'         => 'ids',
+                                       'posts_per_page' => - 1,
+                               )
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $new_meetup_org_data = array();
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $query->posts as $post_id ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -768,7 +770,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"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( empty ( $new_ids ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( empty( $new_ids ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         continue;
</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">@@ -801,7 +803,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> HTML;
</span><span class="cx" style="display: block; padding: 0 10px">                        $count = 0;
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $new_meetup_org_data as $post_id => $new_meetup_org ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $count += 1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $count ++;
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $title = get_the_title( $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                                $meetup_tracker_url = get_site_url() . "/wp-admin/post.php?post=$post_id&action=edit";
</span><span class="cx" style="display: block; padding: 0 10px">                                $template = $template . "$count. <a href='$meetup_tracker_url' rel='noreferrer' target='_blank' >$title</a> : ";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -812,9 +814,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $organizer_name = esc_html( $organizer['name'] );
</span><span class="cx" style="display: block; padding: 0 10px">                                        $meetup_members[] = "<a href='$meetup_group_url/members/$organizer_id' target='_blank' rel='noreferrer' >$organizer_name</a>";
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $template = $template . join( ', ', $meetup_members ) . "<br>";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $template = $template . join( ', ', $meetup_members ) . '<br>';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Add a tag for meetup
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Add a tag for meetup.
</ins><span class="cx" style="display: block; padding: 0 10px">                                 wp_set_object_terms( $post_id, 'Needs to update Organizer list', 'meetup_tags', true );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_mail(
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupclassmeetupapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php     2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/class-meetup-application.php       2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -80,7 +80,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Enqueue scripts and stylesheets.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function enqueue_assets() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function enqueue_assets() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $post;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_register_script(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -161,7 +161,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_default_application_values() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // WordCamp uses an ID with questions. Not sure how are they used. Ask @corey
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // WordCamp uses an ID with questions. Not sure how are they used. Ask @corey.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $values = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_name'                => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_email'               => '',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -231,7 +231,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta( $post_id, 'Extra Comments', $data['q_additional_comments'] );
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta( $post_id, 'Meetup Location', $data['q_mtp_loc'] );
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_id, '_status_change', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_id,
+                       '_status_change',
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'timestamp' => time(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'   => $wordcamp_user_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                'message'   => sprintf( '%s &rarr; %s', 'Application', $statuses[ self::get_default_status() ] ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -278,7 +280,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Public report URL for Meetup Applications
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function get_application_report_url() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return "https://central.wordcamp.org/reports/meetup-applications/";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return 'https://central.wordcamp.org/reports/meetup-applications/';
</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="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptmeetupmeetupphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php       2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-meetup/meetup.php 2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> require_once WCPT_DIR . 'wcpt-meetup/class-meetup-application.php';
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPress_Community\Applications\Meetup_Application;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-defined( 'WPINC' ) or die();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+defined( 'WPINC' ) || die();
</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">  * todo
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampclasswordcampapplicationphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php 2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/class-wordcamp-application.php   2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,7 +13,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        const SHORTCODE_SLUG = 'wordcamp-organizer-application';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        static function get_event_label() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ /**
+        * Return publicly displayed name of the event
+        *
+        * @return string
+        */
+       public static function get_event_label() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return __( 'WordCamp', 'wordcamporg' );
</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">@@ -22,7 +27,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        static function get_event_type() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function get_event_type() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return WCPT_POST_TYPE_ID;
</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">@@ -29,7 +34,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Enqueue scripts and stylesheets
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function enqueue_assets() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function enqueue_assets() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $post;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp_register_script(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -52,7 +57,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return null|void
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function render_application_form( $countries ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function render_application_form( $countries ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 render_wordcamp_application_form( $countries );
</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">@@ -63,7 +68,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array|\WP_Error
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function validate_data( $unsafe_data ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function validate_data( $unsafe_data ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 $safe_data   = array();
</span><span class="cx" style="display: block; padding: 0 10px">                $unsafe_data = shortcode_atts( $this->get_default_application_values(), $unsafe_data );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -97,9 +102,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function get_default_application_values() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_default_application_values() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 $values = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Part 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Part 1.
</ins><span class="cx" style="display: block; padding: 0 10px">                         'q_1079074_first_name'                       => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079074_last_name'                        => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079059_email'                            => '',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -117,7 +122,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1068223_hope_to_accomplish'               => array(),
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1068223_hope_to_accomplish_other'         => '',
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Part 2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Part 2.
</ins><span class="cx" style="display: block; padding: 0 10px">                         'q_1045950_active_meetup'                    => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1045953_role_in_meetup'                   => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1045972_meetup_url'                       => '',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -127,7 +132,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079086_other_tech_events'                => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079082_other_tech_events_success'        => '',
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Part 3
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Part 3.
</ins><span class="cx" style="display: block; padding: 0 10px">                         'q_1079103_wordcamp_location'                => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1046006_wordcamp_date'                    => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1046007_how_many_attendees'               => '',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -148,7 +153,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'where_find_online'                          => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079098_anything_else'                    => '',
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Bonus
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Bonus.
</ins><span class="cx" style="display: block; padding: 0 10px">                         'q_1079112_best_describes_you'               => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'q_1079112_best_describes_you_other'         => '',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,7 +176,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">        public static function get_application_report_url() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return "https://central.wordcamp.org/reports/application-status/";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return 'https://central.wordcamp.org/reports/application-status/';
</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">@@ -181,8 +186,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool|\WP_Error
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function create_post( $data ) {
-               // Create the post
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function create_post( $data ) {
+               // Create the post.
</ins><span class="cx" style="display: block; padding: 0 10px">                 $user      = wcorg_get_user_by_canonical_names( $data['q_4236565_wporg_username'] );
</span><span class="cx" style="display: block; padding: 0 10px">                $statues   = \WordCamp_Loader::get_post_statuses();
</span><span class="cx" style="display: block; padding: 0 10px">                $countries = wcorg_get_countries();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -191,7 +196,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_type'   => $this->get_event_type(),
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_title'  => 'WordCamp ' . $data['q_1079103_wordcamp_location'],
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_status' => WCPT_DEFAULT_STATUS,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'post_author' => is_a( $user, 'WP_User' ) ? $user->ID : 7694169, // Set `wordcamp` as author if supplied username is not valid
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'post_author' => is_a( $user, 'WP_User' ) ? $user->ID : 7694169, // Set `wordcamp` as author if supplied username is not valid.
</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">                $post_id = wp_insert_post( $post, true );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -200,13 +205,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return $post_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">-                // Populate the meta fields
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Populate the meta fields.
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_post_meta( $post_id, '_application_data', $data );
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta( $post_id, '_application_submitter_ip_address', $_SERVER['REMOTE_ADDR'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_id, 'Organizer Name', sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_id,
+                       'Organizer Name',
+                       sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 '%s %s',
</span><span class="cx" style="display: block; padding: 0 10px">                                $data['q_1079074_first_name'],
</span><span class="cx" style="display: block; padding: 0 10px">                                $data['q_1079074_last_name']
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -219,7 +225,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta( $post_id, 'WordPress.org Username', $data['q_4236565_wporg_username'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_id, 'Mailing Address', sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_id,
+                       'Mailing Address',
+                       sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 "%s\n%s%s%s %s\n%s",
</span><span class="cx" style="display: block; padding: 0 10px">                                $data['q_1079060_add1'],
</span><span class="cx" style="display: block; padding: 0 10px">                                $data['q_1079060_add2'] ? $data['q_1079060_add2'] . "\n" : '',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -231,7 +239,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">                add_post_meta(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_id, '_status_change', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_id,
+                       '_status_change',
+                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'timestamp' => time(),
</span><span class="cx" style="display: block; padding: 0 10px">                                'user_id'   => is_a( $user, 'WP_User' ) ? $user->ID : 0,
</span><span class="cx" style="display: block; padding: 0 10px">                                'message'   => sprintf( '%s &rarr; %s', 'Application', $statues[ WCPT_DEFAULT_STATUS ] ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -247,7 +257,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return null|string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function get_organizer_email() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_organizer_email() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $this->post ) && isset( $this->post->ID ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return get_post_meta( $this->post->ID, 'Email Address', true );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -258,7 +268,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return null|string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        function get_event_location() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_event_location() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $this->post ) && isset( $this->post->ID ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return get_post_meta( $this->post->ID, 'Location', true );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span></span></pre></div>
<a id="sitestrunkwordcamporgpublic_htmlwpcontentpluginswcptwcptwordcampwordcampadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php     2019-01-15 11:02:54 UTC (rev 8084)
+++ sites/trunk/wordcamp.org/public_html/wp-content/plugins/wcpt/wcpt-wordcamp/wordcamp-admin.php       2019-01-16 15:36:24 UTC (rev 8085)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22,17 +22,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Initialize WCPT Admin
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function __construct() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function __construct() {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        parent::__construct();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Add some general styling to the admin area
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Add some general styling to the admin area.
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'wcpt_admin_head', array( $this, 'admin_head' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Scripts and CSS
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Scripts and CSS.
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Post status transitions
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Post status transitions.
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'transition_post_status', array( $this, 'trigger_schedule_actions' ), 10, 3 );
</span><span class="cx" style="display: block; padding: 0 10px">                        add_action( 'wcpt_approved_for_pre_planning', array( $this, 'add_organizer_to_central' ), 10 );
</span><span class="cx" style="display: block; padding: 0 10px">                        add_action( 'wcpt_approved_for_pre_planning', array( $this, 'mark_date_added_to_planning_schedule' ), 10 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,13 +40,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        add_filter( 'wp_insert_post_data', array( $this, 'enforce_post_status' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        add_filter(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'wp_insert_post_data', array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'wp_insert_post_data',
+                               array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $this,
</span><span class="cx" style="display: block; padding: 0 10px">                                        'require_complete_meta_to_publish_wordcamp',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ), 11, 2
-                       ); // after enforce_post_status
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ),
+                               11,
+                               2
+                       ); // after enforce_post_status.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Cron jobs
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Cron jobs.
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'plugins_loaded', array( $this, 'schedule_cron_jobs' ), 11 );
</span><span class="cx" style="display: block; padding: 0 10px">                        add_action( 'wcpt_close_wordcamps_after_event', array( $this, 'close_wordcamps_after_event' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        add_action( 'wcpt_metabox_save_done', array( $this, 'update_venue_address' ), 10, 2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,13 +57,11 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * metabox ()
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Add the metabox
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @uses add_meta_box
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function metabox() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function metabox() {
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_meta_box(
</span><span class="cx" style="display: block; padding: 0 10px">                                'wcpt_information',
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'WordCamp Information', 'wcpt' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,7 +104,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return string
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                static function get_event_label() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public static function get_event_label() {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return WordCamp_Application::get_event_label();
</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">@@ -112,7 +113,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return string
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                static function get_event_type() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public static function get_event_type() {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return WordCamp_Application::get_event_type();
</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">@@ -119,22 +120,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Check if a field is readonly.
</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 $key
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $key
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function _is_protected_field( $key ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function _is_protected_field( $key ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return self::is_protected_field( $key );
</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">+                /**
+                * Update mentor username.
+                *
+                * @param int $post_id
+                */
</ins><span class="cx" style="display: block; padding: 0 10px">                 public function update_mentor( $post_id ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->get_event_type() !== get_post_type() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</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 the Mentor username changed, update the site
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // If the Mentor username changed, update the site.
+                       //phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verified in `metabox_save` in class-event-admin.php.
</ins><span class="cx" style="display: block; padding: 0 10px">                         $mentor_username = $_POST[ wcpt_key_to_str( 'Mentor WordPress.org User Name', 'wcpt_' ) ];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $mentor_username !== get_post_meta( $post_id, 'Mentor WordPress.org User Name', true ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( get_post_meta( $post_id, 'Mentor WordPress.org User Name', true ) !== $mentor_username ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $this->add_mentor( get_post( $post_id ), $mentor_username );
</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">@@ -145,8 +152,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * These are used for the maps on Central, stats, etc.
</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 int   $post_id              Post id
-                * @param array $original_meta_values Original meta values before save
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param int   $post_id              Post id.
+                * @param array $original_meta_values Original meta values before save.
</ins><span class="cx" style="display: block; padding: 0 10px">                  */
</span><span class="cx" style="display: block; padding: 0 10px">                public function update_venue_address( $post_id, $original_meta_values ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->get_event_type() !== get_post_type() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -153,28 +160,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</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 the venue address was changed, update its coordinates
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // If the venue address was changed, update its coordinates.
+                       //phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verified in `metabox_save` in class-event-admin.php.
</ins><span class="cx" style="display: block; padding: 0 10px">                         $new_address = $_POST[ wcpt_key_to_str( 'Physical Address', 'wcpt_' ) ];
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $new_address === $original_meta_values['Physical Address'][0] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</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">-                        $request_url = add_query_arg( array(
-                               'address' => rawurlencode( $new_address ),
-                       ), 'https://maps.googleapis.com/maps/api/geocode/json' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $request_url = add_query_arg(
+                               array(
+                                       'address' => rawurlencode( $new_address ),
+                               ),
+                               'https://maps.googleapis.com/maps/api/geocode/json'
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $key = apply_filters( 'wordcamp_google_maps_api_key', '', 'server' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $key ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $request_url = add_query_arg( array(
-                                       'key' => $key,
-                               ), $request_url );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $request_url = add_query_arg(
+                                       array( 'key' => $key ),
+                                       $request_url
+                               );
</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">                        $response = wcorg_redundant_remote_get( $request_url );
</span><span class="cx" style="display: block; padding: 0 10px">                        $body     = json_decode( wp_remote_retrieve_body( $response ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Don't delete the existing (and probably good) values if the request failed
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Don't delete the existing (and probably good) values if the request failed.
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( is_wp_error( $response ) || empty( $body->results[0]->address_components ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                Logger\log( 'geocoding_failure', compact( 'request_url', 'response' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                return;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -197,7 +209,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @see https://developers.google.com/maps/documentation/geocoding/intro#Types API response schema
</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 $response
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param array $response
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -224,7 +236,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                        case 'country':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                $country_code = $component->short_name; // This is not guaranteed to be ISO 3166-1 alpha-2, but should match in most cases
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         $country_code = $component->short_name; // This is not guaranteed to be ISO 3166-1 alpha-2, but should match in most cases.
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 $country_name = $component->long_name;
</span><span class="cx" style="display: block; padding: 0 10px">                                                                break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -271,7 +283,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                static function meta_keys( $meta_group = '' ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public static function meta_keys( $meta_group = '' ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         /*
</span><span class="cx" style="display: block; padding: 0 10px">                         * Warning: These keys are used for both the input field label and the postmeta key, so if you want to
</span><span class="cx" style="display: block; padding: 0 10px">                         * modify an existing label then you'll also need to migrate any rows in the database to use the new key.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -288,7 +300,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $retval = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Organizer Name'                   => 'text',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'WordPress.org Username'           => 'text',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'Email Address'                    => 'text', // Note: This is the lead organizer's e-mail address, which is different than the "E-mail Address" field
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'Email Address'                    => 'text', // Note: This is the lead organizer's e-mail address, which is different than the "E-mail Address" field.
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'Telephone'                        => 'text',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Mailing Address'                  => 'textarea',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Sponsor Wrangler Name'            => 'text',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -341,7 +353,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'contributor':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        // These fields names need to be unique, hence the 'Contributor' prefix on each one
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 // These fields names need to be unique, hence the 'Contributor' prefix on each one.
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $retval = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Contributor Day'                => 'checkbox',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Contributor Day Date (YYYY-mm-dd)' => 'date',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -360,7 +372,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Location'                        => 'text',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'URL'                             => 'wc-url',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'E-mail Address'                  => 'text',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                // Note: This is the address for the entire organizing team, which is different than the "Email Address" field
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // Note: This is the address for the entire organizing team, which is different than the "Email Address" field.
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'Twitter'                         => 'text',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'WordCamp Hashtag'                => 'text',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Number of Anticipated Attendees' => 'text',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -456,7 +468,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                static function get_venue_address_meta_keys() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public static function get_venue_address_meta_keys() {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return array(
</span><span class="cx" style="display: block; padding: 0 10px">                                '_venue_coordinates',
</span><span class="cx" style="display: block; padding: 0 10px">                                '_venue_city',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -471,12 +483,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * Fired during admin_print_styles
</span><span class="cx" style="display: block; padding: 0 10px">                 * Adds jQuery UI
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function admin_scripts() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function admin_scripts() {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Edit WordCamp screen
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Edit WordCamp screen.
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( WCPT_POST_TYPE_ID === get_post_type() ) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Default data
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Default data.
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $data = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'Mentors' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'l10n' => array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -486,7 +498,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"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Only include mentor data if the Mentor username field is editable
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Only include mentor data if the Mentor username field is editable.
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ( current_user_can( 'wordcamp_manage_mentors' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $data['Mentors']['data'] = Mentors_Dashboard\get_all_mentor_data();
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -500,12 +512,10 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * admin_head ()
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Add some general styling to the admin area
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function admin_head() {
-                       if ( ! empty( $_GET['post_type'] ) && $_GET['post_type'] == WCPT_POST_TYPE_ID ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function admin_head() {
+                       if ( ! empty( $_GET['post_type'] ) && WCPT_POST_TYPE_ID == $_GET['post_type'] ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        .column-title { width: 40%; }
</span><span class="cx" style="display: block; padding: 0 10px">                        .column-wcpt_location, .column-wcpt_date, column-wcpt_organizer { white-space: nowrap; }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -515,13 +525,11 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * user_profile_update ()
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Responsible for showing additional profile options and settings
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @todo Everything
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function user_profile_update( $user_id ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function user_profile_update( $user_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( ! wcpt_has_access() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return false;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -528,23 +536,21 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * user_profile_wordcamp ()
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Responsible for saving additional profile options and settings
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @todo Everything
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function user_profile_wordcamp( $profileuser ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function user_profile_wordcamp( $profileuser ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( ! wcpt_has_access() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return false;
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <h3><?php _e( 'WordCamps', 'wcpt' ); ?></h3>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <h3><?php esc_html_e( 'WordCamps', 'wcpt' ); ?></h3>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <table class="form-table">
</span><span class="cx" style="display: block; padding: 0 10px">                        <tr valign="top">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <th scope="row"><?php _e( 'WordCamps', 'wcpt' ); ?></th>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <th scope="row"><?php esc_html_e( 'WordCamps', 'wcpt' ); ?></th>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <td>
</span><span class="cx" style="display: block; padding: 0 10px">                                </td>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -555,14 +561,13 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * column_headers ()
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Manage the column headers
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param array $columns
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 *
</ins><span class="cx" style="display: block; padding: 0 10px">                  * @return array $columns
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function column_headers( $columns ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function column_headers( $columns ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $columns = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'cb'             => '<input type="checkbox" />',
</span><span class="cx" style="display: block; padding: 0 10px">                                'title'          => __( 'Title', 'wcpt' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -576,57 +581,55 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * column_data ( $column, $post_id )
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Print extra columns
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param string $column
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param int    $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">-                function column_data( $column, $post_id ) {
-                       if ( $_GET['post_type'] !== WCPT_POST_TYPE_ID ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function column_data( $column, $post_id ) {
+                       if ( WCPT_POST_TYPE_ID !== $_GET['post_type'] ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $column;
</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">                        switch ( $column ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'wcpt_location':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        echo wcpt_get_wordcamp_location() ? wcpt_get_wordcamp_location() : __( 'No Location', 'wcpt' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo esc_html( wcpt_get_wordcamp_location() ? wcpt_get_wordcamp_location() : __( 'No Location', 'wcpt' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'wcpt_date':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        // Has a start date
-                                       if ( $start = wcpt_get_wordcamp_start_date() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 // Has a start date.
+                                       $start = wcpt_get_wordcamp_start_date();
+                                       if ( $start ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                // Has an end date
-                                               if ( $end = wcpt_get_wordcamp_end_date() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // Has an end date.
+                                               $end = wcpt_get_wordcamp_end_date();
+                                               if ( $end ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         $string_date = sprintf( __( 'Start: %1$s<br />End: %2$s', 'wcpt' ), $start, $end );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        // No end date
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 // No end date.
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $string_date = sprintf( __( 'Start: %1$s', 'wcpt' ), $start );
</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">-                                                // No date
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         // No date.
</ins><span class="cx" style="display: block; padding: 0 10px">                                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $string_date = __( 'No Date', 'wcpt' );
</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">-                                        echo $string_date;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo wp_kses( $string_date, array( 'br' => array() ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'wcpt_organizer':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        echo wcpt_get_wordcamp_organizer_name() ? wcpt_get_wordcamp_organizer_name() : __( 'No Organizer', 'wcpt' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo esc_html( wcpt_get_wordcamp_organizer_name() ? wcpt_get_wordcamp_organizer_name() : __( 'No Organizer', 'wcpt' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'wcpt_venue':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        echo wcpt_get_wordcamp_venue_name() ? wcpt_get_wordcamp_venue_name() : __( 'No Venue', 'wcpt' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo esc_html( wcpt_get_wordcamp_venue_name() ? wcpt_get_wordcamp_venue_name() : __( 'No Venue', 'wcpt' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         break;
</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><span class="cx" style="display: block; padding: 0 10px">                /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                 * post_row_actions ( $actions, $post )
-                *
</del><span class="cx" style="display: block; padding: 0 10px">                  * Remove the quick-edit action link and display the description under
</span><span class="cx" style="display: block; padding: 0 10px">                 *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param array $actions
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -633,21 +636,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param array $post
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array $actions
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                function post_row_actions( $actions, $post ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         public function post_row_actions( $actions, $post ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( WCPT_POST_TYPE_ID == $post->post_type ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                unset( $actions['inline hide-if-no-js'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $wc = array();
</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 ( $wc_location = wcpt_get_wordcamp_location() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $wc_location = wcpt_get_wordcamp_location();
+                               if ( $wc_location ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $wc['location'] = $wc_location;
</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 ( $wc_url = make_clickable( wcpt_get_wordcamp_url() ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $wc_url = make_clickable( wcpt_get_wordcamp_url() );
+                               if ( $wc_url ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $wc['url'] = $wc_url;
</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">-                                echo implode( ' - ', (array) $wc );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         echo wp_kses( implode( ' - ', (array) $wc ), wp_kses_allowed_html() );
</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">                        return $actions;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -671,7 +676,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'wcpt-pre-planning' == $new_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                do_action( 'wcpt_approved_for_pre_planning', $post );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        } elseif ( $old_status == 'wcpt-needs-schedule' && $new_status == 'wcpt-scheduled' ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 } elseif ( 'wcpt-needs-schedule' == $old_status && 'wcpt-scheduled' == $new_status ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 do_action( 'wcpt_added_to_final_schedule', $post );
</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">@@ -688,6 +693,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param WP_Post $post
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                public function add_organizer_to_central( $post ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       // phpcs:ignore WordPress.Security.NonceVerification.Missing -- WordCamp status can be moved to pre-planning status only from the admin edit screen where nonce is already verified.
</ins><span class="cx" style="display: block; padding: 0 10px">                         $lead_organizer = get_user_by( 'login', $_POST['wcpt_wordpress_org_username'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $lead_organizer && add_user_to_blog( get_current_blog_id(), $lead_organizer->ID, 'contributor' ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -766,11 +773,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                public function enforce_post_status( $post_data, $post_data_raw ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $post_data['post_type'] != WCPT_POST_TYPE_ID || empty( $_POST['post_ID'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( WCPT_POST_TYPE_ID != $post_data['post_type'] || empty( $post_data_raw['ID'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $post_data;
</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">-                        $post = get_post( $_POST['post_ID'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post = get_post( $post_data_raw['post_ID'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( ! $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return $post_data;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -813,9 +820,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $required_needs_site_fields = $this->get_required_fields( 'needs-site' );
</span><span class="cx" style="display: block; padding: 0 10px">                        $required_scheduled_fields  = $this->get_required_fields( 'scheduled' );
</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 pending posts
-                       if ( 'wcpt-needs-site' == $post_data['post_status'] && absint( $_POST['post_ID'] ) > $min_site_id ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Check pending posts.
+                       if ( 'wcpt-needs-site' == $post_data['post_status'] && absint( $post_data_raw['ID'] ) > $min_site_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 foreach ( $required_needs_site_fields as $field ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                                       // phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce check would have done in `metabox_save`.
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( empty( $value ) || 'null' == $value ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -826,9 +835,10 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Check published posts
-                       if ( 'wcpt-scheduled' == $post_data['post_status'] && isset( $_POST['post_ID'] ) && absint( $_POST['post_ID'] ) > $min_site_id ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Check published posts.
+                       if ( 'wcpt-scheduled' == $post_data['post_status'] && isset( $post_data_raw['ID'] ) && absint( $post_data_raw['ID'] ) > $min_site_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 foreach ( $required_scheduled_fields as $field ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        // phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce check would have done in `metabox_save`.
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $value = $_POST[ wcpt_key_to_str( $field, 'wcpt_' ) ];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( empty( $value ) || 'null' == $value ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -845,7 +855,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="cx" style="display: block; padding: 0 10px">                 * Get a list of fields required to move to a certain post status
</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 string $status 'needs-site' | 'scheduled' | 'any'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+          * @param string $status 'needs-site' | 'scheduled' | 'any'.
</ins><span class="cx" style="display: block; padding: 0 10px">                  *
</span><span class="cx" style="display: block; padding: 0 10px">                 * @return array
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -853,7 +863,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $needs_site = array( 'E-mail Address' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $scheduled = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // WordCamp
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // WordCamp.
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'Start Date (YYYY-mm-dd)',
</span><span class="cx" style="display: block; padding: 0 10px">                                'Location',
</span><span class="cx" style="display: block; padding: 0 10px">                                'URL',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -861,7 +871,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'Number of Anticipated Attendees',
</span><span class="cx" style="display: block; padding: 0 10px">                                'Multi-Event Sponsor Region',
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Organizing Team
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Organizing Team.
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'Organizer Name',
</span><span class="cx" style="display: block; padding: 0 10px">                                'WordPress.org Username',
</span><span class="cx" style="display: block; padding: 0 10px">                                'Email Address',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -872,8 +882,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'Budget Wrangler Name',
</span><span class="cx" style="display: block; padding: 0 10px">                                'Budget Wrangler E-mail Address',
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Venue
-                               'Physical Address', // used to build stats
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Venue.
+                               'Physical Address', // used to build stats.
</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">                        switch ( $status ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -894,12 +904,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return $required_fields;
</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">+                /**
+                * TODO: Add description.
+                *
+                * @return array
+                */
</ins><span class="cx" style="display: block; padding: 0 10px">                 public static function get_protected_fields() {
</span><span class="cx" style="display: block; padding: 0 10px">                        $protected_fields = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! current_user_can( 'wordcamp_manage_mentors' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $protected_fields = array_merge(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $protected_fields, array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $protected_fields,
+                                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'Mentor WordPress.org User Name',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Mentor Name',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Mentor E-mail Address',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -909,7 +925,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! current_user_can( 'wordcamp_wrangle_wordcamps' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $protected_fields = array_merge(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $protected_fields, array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $protected_fields,
+                                       array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'Multi-Event Sponsor Region',
</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">@@ -941,7 +958,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $screen = get_current_screen();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                         if ( empty( $post->post_type ) || $this->get_event_type() != $post->post_type || 'post' !== $screen->base ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return array();
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1055,7 +1071,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">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-endif; // class_exists check
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+endif; // class_exists check.
</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">  * Functions for displaying specific meta boxes
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1065,16 +1081,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">        wcpt_metabox( $meta_keys );
</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">+/**
+ * Displays organizer metabox
+ */
</ins><span class="cx" style="display: block; padding: 0 10px"> function wcpt_organizer_metabox() {
</span><span class="cx" style="display: block; padding: 0 10px">        $meta_keys = $GLOBALS['wordcamp_admin']->meta_keys( 'organizer' );
</span><span class="cx" style="display: block; padding: 0 10px">        wcpt_metabox( $meta_keys );
</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">+/**
+ * Displays venue metabox
+ */
</ins><span class="cx" style="display: block; padding: 0 10px"> function wcpt_venue_metabox() {
</span><span class="cx" style="display: block; padding: 0 10px">        $meta_keys = $GLOBALS['wordcamp_admin']->meta_keys( 'venue' );
</span><span class="cx" style="display: block; padding: 0 10px">        wcpt_metabox( $meta_keys );
</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">+/**
+ * Displays contributor metabox
+ */
</ins><span class="cx" style="display: block; padding: 0 10px"> function wcpt_contributor_metabox() {
</span><span class="cx" style="display: block; padding: 0 10px">        $meta_keys = $GLOBALS['wordcamp_admin']->meta_keys( 'contributor' );
</span><span class="cx" style="display: block; padding: 0 10px">        wcpt_metabox( $meta_keys );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1081,8 +1106,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"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * wcpt_metabox ()
- *
</del><span class="cx" style="display: block; padding: 0 10px">  * The metabox that holds all of the additional information
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package WordCamp Post Type
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1094,11 +1117,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $required_fields = WordCamp_Admin::get_required_fields( 'any' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        // @todo When you refactor meta_keys() to support changing labels -- see note in meta_keys() -- also make it support these notes
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // @todo When you refactor meta_keys() to support changing labels -- see note in meta_keys() -- also make it support these notes.
</ins><span class="cx" style="display: block; padding: 0 10px">         $messages = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'Telephone'                       => 'Required for shipping.',
</span><span class="cx" style="display: block; padding: 0 10px">                'Mailing Address'                 => 'Shipping address.',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'Physical Address'                => 'Please include the city, state/province and country.', // So it can be geocoded correctly for the map
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'Physical Address'                => 'Please include the city, state/province and country.', // So it can be geocoded correctly for the map.
</ins><span class="cx" style="display: block; padding: 0 10px">                 'Global Sponsorship Grant Amount' => 'No commas, thousands separators or currency symbols. Ex. 1234.56',
</span><span class="cx" style="display: block; padding: 0 10px">                'Global Sponsorship Grant'        => 'Deprecated.',
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span></span></pre>
</div>
</div>

</body>
</html>