@@ 530-570 (lines=41) @@ | ||
527 | * @throws EE_Error |
|
528 | * (i.e. RAP) |
|
529 | */ |
|
530 | public function get_registrations_per_day_and_per_status_report($period = '-1 month') |
|
531 | { |
|
532 | global $wpdb; |
|
533 | $registration_table = $wpdb->prefix . 'esp_registration'; |
|
534 | $event_table = $wpdb->posts; |
|
535 | $sql_date = date('Y-m-d H:i:s', strtotime($period)); |
|
536 | //prepare the query interval for displaying offset |
|
537 | $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'dates.REG_date'); |
|
538 | //inner date query |
|
539 | $inner_date_query = "SELECT DISTINCT REG_date from {$registration_table} "; |
|
540 | $inner_where = ' WHERE'; |
|
541 | //exclude events not authored by user if permissions in effect |
|
542 | if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) { |
|
543 | $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID"; |
|
544 | $inner_where .= ' post_author = ' . get_current_user_id() . ' AND'; |
|
545 | } |
|
546 | $inner_where .= " REG_date >= '{$sql_date}'"; |
|
547 | $inner_date_query .= $inner_where; |
|
548 | //start main query |
|
549 | $select = "SELECT DATE({$query_interval}) as Registration_REG_date, "; |
|
550 | $join = ''; |
|
551 | $join_parts = array(); |
|
552 | $select_parts = array(); |
|
553 | //loop through registration stati to do parts for each status. |
|
554 | foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) { |
|
555 | if ($STS_ID === EEM_Registration::status_id_incomplete) { |
|
556 | continue; |
|
557 | } |
|
558 | $select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}"; |
|
559 | $join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.REG_date = dates.REG_date AND {$STS_code}.STS_ID = '{$STS_ID}'"; |
|
560 | } |
|
561 | //setup the selects |
|
562 | $select .= implode(', ', $select_parts); |
|
563 | $select .= " FROM ($inner_date_query) AS dates LEFT JOIN "; |
|
564 | //setup the joins |
|
565 | $join .= implode(' LEFT JOIN ', $join_parts); |
|
566 | //now let's put it all together |
|
567 | $query = $select . $join . ' GROUP BY Registration_REG_date'; |
|
568 | //and execute it |
|
569 | return $wpdb->get_results($query, ARRAY_A); |
|
570 | } |
|
571 | ||
572 | ||
573 | /** |
|
@@ 622-660 (lines=39) @@ | ||
619 | * @throws EE_Error |
|
620 | * (i.e. RAP) |
|
621 | */ |
|
622 | public function get_registrations_per_event_and_per_status_report($period = '-1 month') |
|
623 | { |
|
624 | global $wpdb; |
|
625 | $registration_table = $wpdb->prefix . 'esp_registration'; |
|
626 | $event_table = $wpdb->posts; |
|
627 | $sql_date = date('Y-m-d H:i:s', strtotime($period)); |
|
628 | //inner date query |
|
629 | $inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table "; |
|
630 | $inner_where = ' WHERE'; |
|
631 | //exclude events not authored by user if permissions in effect |
|
632 | if (!EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) { |
|
633 | $inner_date_query .= "LEFT JOIN {$event_table} ON ID = EVT_ID"; |
|
634 | $inner_where .= ' post_author = ' . get_current_user_id() . ' AND'; |
|
635 | } |
|
636 | $inner_where .= " REG_date >= '{$sql_date}'"; |
|
637 | $inner_date_query .= $inner_where; |
|
638 | //build main query |
|
639 | $select = 'SELECT Event.post_title as Registration_Event, '; |
|
640 | $join = ''; |
|
641 | $join_parts = array(); |
|
642 | $select_parts = array(); |
|
643 | //loop through registration stati to do parts for each status. |
|
644 | foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) { |
|
645 | if ($STS_ID === EEM_Registration::status_id_incomplete) { |
|
646 | continue; |
|
647 | } |
|
648 | $select_parts[] = "COUNT({$STS_code}.REG_ID) as {$STS_ID}"; |
|
649 | $join_parts[] = "{$registration_table} AS {$STS_code} ON {$STS_code}.EVT_ID = dates.EVT_ID AND {$STS_code}.STS_ID = '{$STS_ID}' AND {$STS_code}.REG_date = dates.REG_date"; |
|
650 | } |
|
651 | //setup the selects |
|
652 | $select .= implode(', ', $select_parts); |
|
653 | $select .= " FROM ($inner_date_query) AS dates LEFT JOIN $event_table as Event ON Event.ID = dates.EVT_ID LEFT JOIN "; |
|
654 | //setup remaining joins |
|
655 | $join .= implode(' LEFT JOIN ', $join_parts); |
|
656 | //now put it all together |
|
657 | $query = $select . $join . ' GROUP BY Registration_Event'; |
|
658 | //and execute |
|
659 | return $wpdb->get_results($query, ARRAY_A); |
|
660 | } |
|
661 | ||
662 | ||
663 | /** |