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.