Making WordPress.org


Ignore:
Timestamp:
11/28/2018 10:47:15 PM (8 years ago)
Author:
coreymckrill
Message:

WordCamp Reports: Refactor WordCamp Counts for better data caching

This separates the data gathering so that get_data only handles the "raw"
rows of data that could be exported to a CSV, while compile_report_data
handles the counting of totals, uniques, etc. This also streamlines the
gender estimation process so that the API client is only used once per site.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wordcamp-reports/views/html/wordcamp-counts.php

    r7883 r7912  
    99use DateTime;
    1010
     11/** @var array $data */
    1112/** @var DateTime $start_date */
    1213/** @var DateTime $end_date */
    1314/** @var string $statuses */
    14 /** @var array $data */
    15 /** @var array $totals */
    16 /** @var array $uniques */
    17 /** @var array $genders */
    1815
    1916$gender_legend = '<span class="description small"><span class="total">Total</span> / F / M / ?</span>';
    2017?>
    2118
    22 <?php if ( count( $data ) ) : ?>
     19<?php if ( count( $data['wordcamps'] ) ) : ?>
    2320    <h3 id="active-heading">
    24         Numbers for WordCamps occurring
     21        Counts for WordCamps occurring
    2522        <?php if ( $start_date->format( 'Y-m-d' ) === $end_date->format( 'Y-m-d' ) ) : ?>
    2623            on <?php echo esc_html( $start_date->format( 'M jS, Y' ) ); ?>
     
    3330        <tr>
    3431            <td>WordCamps</td>
    35             <td class="number total"><?php echo number_format_i18n( count( $data ) ); ?></td>
     32            <td class="number total"><?php echo number_format_i18n( count( $data['wordcamps'] ) ); ?></td>
    3633        </tr>
    3734    </table>
     
    4744        <tr>
    4845            <td>Attendees</td>
    49             <td class="number"><?php echo number_format_i18n( $totals['attendees'] ); ?></td>
    50             <td class="number"><?php echo number_format_i18n( $uniques['attendees'] ); ?></td>
     46            <td class="number"><?php echo number_format_i18n( $data['totals']['attendee'] ); ?></td>
     47            <td class="number"><?php echo number_format_i18n( $data['uniques']['attendee'] ); ?></td>
    5148        </tr>
    5249        <tr>
    5350            <td>Organizers</td>
    54             <td class="number"><?php echo number_format_i18n( $totals['organizers'] ); ?></td>
    55             <td class="number"><?php echo number_format_i18n( $uniques['organizers'] ); ?></td>
     51            <td class="number"><?php echo number_format_i18n( $data['totals']['organizer'] ); ?></td>
     52            <td class="number"><?php echo number_format_i18n( $data['uniques']['organizer'] ); ?></td>
    5653        </tr>
    5754        <tr>
    5855            <td>Sessions</td>
    59             <td class="number"><?php echo number_format_i18n( $totals['sessions'] ); ?></td>
     56            <td class="number"><?php echo number_format_i18n( $data['totals']['session'] ); ?></td>
    6057            <td class="number">n/a</td>
    6158        </tr>
    6259        <tr>
    6360            <td>Speakers</td>
    64             <td class="number"><?php echo number_format_i18n( $totals['speakers'] ); ?></td>
    65             <td class="number"><?php echo number_format_i18n( $uniques['speakers'] ); ?></td>
     61            <td class="number"><?php echo number_format_i18n( $data['totals']['speaker'] ); ?></td>
     62            <td class="number"><?php echo number_format_i18n( $data['uniques']['speaker'] ); ?></td>
    6663        </tr>
    6764        <tr>
    6865            <td>Sponsors</td>
    69             <td class="number"><?php echo number_format_i18n( $totals['sponsors'] ); ?></td>
    70             <td class="number"><?php echo number_format_i18n( $uniques['sponsors'] ); ?></td>
     66            <td class="number"><?php echo number_format_i18n( $data['totals']['sponsor'] ); ?></td>
     67            <td class="number"><?php echo number_format_i18n( $data['uniques']['sponsor'] ); ?></td>
    7168        </tr>
    7269    </table>
    7370
    74     <?php if ( ! empty( $genders ) ) : ?>
    75         <h4>Gender Breakdown</h4>
     71    <?php if ( ! empty( $data['genders'] ) ) : ?>
     72        <h4>Estimated Gender Breakdown</h4>
    7673
    7774        <table class="striped widefat but-not-too-wide">
     
    8582            <tr>
    8683                <td>Attendees</td>
    87                 <td class="number"><?php echo number_format_i18n( $totals['attendees'] ); ?></td>
    88                 <td class="number"><?php echo number_format_i18n( $genders['attendees']['female'] ); ?></td>
    89                 <td class="number"><?php echo number_format_i18n( $genders['attendees']['male'] ); ?></td>
    90                 <td class="number"><?php echo number_format_i18n( $genders['attendees']['unknown'] ); ?></td>
     84                <td class="number"><?php echo number_format_i18n( $data['totals']['attendee'] ); ?></td>
     85                <td class="number"><?php echo number_format_i18n( $data['genders']['attendee']['female'] ); ?></td>
     86                <td class="number"><?php echo number_format_i18n( $data['genders']['attendee']['male'] ); ?></td>
     87                <td class="number"><?php echo number_format_i18n( $data['genders']['attendee']['unknown'] ); ?></td>
    9188            </tr>
    9289            <tr>
    9390                <td>Organizers</td>
    94                 <td class="number"><?php echo number_format_i18n( $totals['organizers'] ); ?></td>
    95                 <td class="number"><?php echo number_format_i18n( $genders['organizers']['female'] ); ?></td>
    96                 <td class="number"><?php echo number_format_i18n( $genders['organizers']['male'] ); ?></td>
    97                 <td class="number"><?php echo number_format_i18n( $genders['organizers']['unknown'] ); ?></td>
     91                <td class="number"><?php echo number_format_i18n( $data['totals']['organizer'] ); ?></td>
     92                <td class="number"><?php echo number_format_i18n( $data['genders']['organizer']['female'] ); ?></td>
     93                <td class="number"><?php echo number_format_i18n( $data['genders']['organizer']['male'] ); ?></td>
     94                <td class="number"><?php echo number_format_i18n( $data['genders']['organizer']['unknown'] ); ?></td>
    9895            </tr>
    9996            <tr>
    10097                <td>Speakers</td>
    101                 <td class="number"><?php echo number_format_i18n( $totals['speakers'] ); ?></td>
    102                 <td class="number"><?php echo number_format_i18n( $genders['speakers']['female'] ); ?></td>
    103                 <td class="number"><?php echo number_format_i18n( $genders['speakers']['male'] ); ?></td>
    104                 <td class="number"><?php echo number_format_i18n( $genders['speakers']['unknown'] ); ?></td>
     98                <td class="number"><?php echo number_format_i18n( $data['totals']['speaker'] ); ?></td>
     99                <td class="number"><?php echo number_format_i18n( $data['genders']['speaker']['female'] ); ?></td>
     100                <td class="number"><?php echo number_format_i18n( $data['genders']['speaker']['male'] ); ?></td>
     101                <td class="number"><?php echo number_format_i18n( $data['genders']['speaker']['unknown'] ); ?></td>
    105102            </tr>
    106103        </table>
     
    114111            <td>Date</td>
    115112            <td>Status</td>
    116             <td>Attendees<?php if ( ! empty( $genders ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
    117             <td>Organizers<?php if ( ! empty( $genders ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
     113            <td>Attendees<?php if ( ! empty( $data['genders'] ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
     114            <td>Organizers<?php if ( ! empty( $data['genders'] ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
    118115            <td>Sessions</td>
    119             <td>Speakers<?php if ( ! empty( $genders ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
     116            <td>Speakers<?php if ( ! empty( $data['genders'] ) ) : ?><br /><?php echo $gender_legend ?><?php endif; ?></td>
    120117            <td>Sponsors</td>
    121118        </tr>
    122         <?php foreach ( $data as $event ) : ?>
     119        <?php foreach ( $data['wordcamps'] as $event ) : ?>
    123120            <tr>
    124                 <td><a href="<?php echo esc_attr( $event['URL'] ); ?>"><?php echo esc_html( $event['Name'] ); ?></a></td>
    125                 <td><?php echo esc_html( $event['Start Date (YYYY-mm-dd)'] ); ?></td>
    126                 <td><?php echo esc_html( $event['Status'] ); ?></td>
     121                <td><a href="<?php echo esc_attr( $event['info']['URL'] ); ?>"><?php echo esc_html( $event['info']['Name'] ); ?></a></td>
     122                <td><?php echo esc_html( $event['info']['Start Date (YYYY-mm-dd)'] ); ?></td>
     123                <td><?php echo esc_html( $event['info']['Status'] ); ?></td>
    127124                <td class="number">
    128                     <span class="total"><?php echo number_format_i18n( $event['attendees']['total'] ); ?></span>
    129                     <?php if ( ! empty( $genders ) ) : ?>
    130                         / <?php echo number_format_i18n( $event['attendees']['gender']['female'] ); ?>
    131                         / <?php echo number_format_i18n( $event['attendees']['gender']['male'] ); ?>
    132                         / <?php echo number_format_i18n( $event['attendees']['gender']['unknown'] ); ?>
     125                    <span class="total"><?php echo number_format_i18n( $event['totals']['attendee'] ); ?></span>
     126                    <?php if ( ! empty( $data['genders'] ) ) : ?>
     127                        / <?php echo number_format_i18n( $event['genders']['attendee']['female'] ); ?>
     128                        / <?php echo number_format_i18n( $event['genders']['attendee']['male'] ); ?>
     129                        / <?php echo number_format_i18n( $event['genders']['attendee']['unknown'] ); ?>
    133130                    <?php endif; ?>
    134131                </td>
    135132                <td class="number">
    136                     <span class="total"><?php echo number_format_i18n( $event['organizers']['total'] ); ?></span>
    137                     <?php if ( ! empty( $genders ) ) : ?>
    138                         / <?php echo number_format_i18n( $event['organizers']['gender']['female'] ); ?>
    139                         / <?php echo number_format_i18n( $event['organizers']['gender']['male'] ); ?>
    140                         / <?php echo number_format_i18n( $event['organizers']['gender']['unknown'] ); ?>
     133                    <span class="total"><?php echo number_format_i18n( $event['totals']['organizer'] ); ?></span>
     134                    <?php if ( ! empty( $data['genders'] ) ) : ?>
     135                        / <?php echo number_format_i18n( $event['genders']['organizer']['female'] ); ?>
     136                        / <?php echo number_format_i18n( $event['genders']['organizer']['male'] ); ?>
     137                        / <?php echo number_format_i18n( $event['genders']['organizer']['unknown'] ); ?>
    141138                    <?php endif; ?>
    142139                </td>
    143140                <td class="number total">
    144                     <?php echo number_format_i18n( $event['sessions']['total'] ); ?>
     141                    <?php echo number_format_i18n( $event['totals']['session'] ); ?>
    145142                </td>
    146143                <td class="number">
    147                     <span class="total"><?php echo number_format_i18n( $event['speakers']['total'] ); ?></span>
    148                     <?php if ( ! empty( $genders ) ) : ?>
    149                         / <?php echo number_format_i18n( $event['speakers']['gender']['female'] ); ?>
    150                         / <?php echo number_format_i18n( $event['speakers']['gender']['male'] ); ?>
    151                         / <?php echo number_format_i18n( $event['speakers']['gender']['unknown'] ); ?>
     144                    <span class="total"><?php echo number_format_i18n( $event['totals']['speaker'] ); ?></span>
     145                    <?php if ( ! empty( $data['genders'] ) ) : ?>
     146                        / <?php echo number_format_i18n( $event['genders']['speaker']['female'] ); ?>
     147                        / <?php echo number_format_i18n( $event['genders']['speaker']['male'] ); ?>
     148                        / <?php echo number_format_i18n( $event['genders']['speaker']['unknown'] ); ?>
    152149                    <?php endif; ?>
    153150                </td>
    154151                <td class="number total">
    155                     <?php echo number_format_i18n( $event['sponsors']['total'] ); ?>
     152                    <?php echo number_format_i18n( $event['totals']['sponsor'] ); ?>
    156153                </td>
    157154            </tr>
Note: See TracChangeset for help on using the changeset viewer.