Code Duplication    Length = 49-52 lines in 2 locations

core/db_models/EEM_Registration.model.php 2 locations

@@ 490-541 (lines=52) @@
487
     * @return stdClass[] with properties Registration_REG_date and a column for each registration status as the STS_ID
488
     *                    (i.e. RAP)
489
     */
490
    public function get_registrations_per_day_and_per_status_report($period = '-1 month')
491
    {
492
        global $wpdb;
493
        $registration_table = $wpdb->prefix . 'esp_registration';
494
        $event_table = $wpdb->posts;
495
        $sql_date = date("Y-m-d H:i:s", strtotime($period));
496
        //prepare the query interval for displaying offset
497
        $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset($this->get_timezone(), 'dates.REG_date');
498
        //inner date query
499
        $inner_date_query = "SELECT DISTINCT REG_date from $registration_table ";
500
        $inner_where = " WHERE";
501
        //exclude events not authored by user if permissions in effect
502
        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
503
            $inner_date_query .= "LEFT JOIN $event_table ON ID = EVT_ID";
504
            $inner_where .= " post_author = " . get_current_user_id() . " AND";
505
        }
506
        $inner_where .= " REG_date >= '$sql_date'";
507
        $inner_date_query .= $inner_where;
508
        //start main query
509
        $select = "SELECT DATE($query_interval) as Registration_REG_date, ";
510
        $join = '';
511
        $join_parts = array();
512
        $select_parts = array();
513
        //loop through registration stati to do parts for each status.
514
        foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
515
            if ($STS_ID === EEM_Registration::status_id_incomplete) {
516
                continue;
517
            }
518
            $select_parts[] = "COUNT($STS_code.REG_ID) as $STS_ID";
519
            $join_parts[] = "$registration_table AS $STS_code ON $STS_code.REG_date = dates.REG_date AND $STS_code.STS_ID = '$STS_ID'";
520
        }
521
        //setup the selects
522
        $select .= implode(', ', $select_parts);
523
        $select .= " FROM ($inner_date_query) AS dates LEFT JOIN ";
524
        //setup the joins
525
        $join .= implode(" LEFT JOIN ", $join_parts);
526
        //now let's put it all together
527
        $query = $select . $join . ' GROUP BY Registration_REG_date';
528
        //and execute it
529
        $results = $wpdb->get_results($query, ARRAY_A);
530
        return $results;
531
    }
532
533
534
535
    /**
536
     *        get the number of registrations per event  for the Registration Admin page Reports Tab
537
     *
538
     * @access        public
539
     * @param $period string which can be passed to php's strtotime function (eg "-1 month")
540
     * @return stdClass[] each with properties event_name, reg_limit, and total
541
     */
542
    public function get_registrations_per_event_report($period = '-1 month')
543
    {
544
        $date_sql = $this->convert_datetime_for_query('REG_date', date("Y-m-d H:i:s", strtotime($period)),
@@ 578-626 (lines=49) @@
575
     * @return stdClass[] with properties `Registration_Event` and a column for each registration status as the STS_ID
576
     *                    (i.e. RAP)
577
     */
578
    public function get_registrations_per_event_and_per_status_report($period = '-1 month')
579
    {
580
        global $wpdb;
581
        $registration_table = $wpdb->prefix . 'esp_registration';
582
        $event_table = $wpdb->posts;
583
        $sql_date = date("Y-m-d H:i:s", strtotime($period));
584
        //inner date query
585
        $inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table ";
586
        $inner_where = " WHERE";
587
        //exclude events not authored by user if permissions in effect
588
        if ( ! EE_Registry::instance()->CAP->current_user_can('ee_read_others_registrations', 'reg_per_event_report')) {
589
            $inner_date_query .= "LEFT JOIN $event_table ON ID = EVT_ID";
590
            $inner_where .= " post_author = " . get_current_user_id() . " AND";
591
        }
592
        $inner_where .= " REG_date >= '$sql_date'";
593
        $inner_date_query .= $inner_where;
594
        //build main query
595
        $select = "SELECT Event.post_title as Registration_Event, ";
596
        $join = '';
597
        $join_parts = array();
598
        $select_parts = array();
599
        //loop through registration stati to do parts for each status.
600
        foreach (EEM_Registration::reg_status_array() as $STS_ID => $STS_code) {
601
            if ($STS_ID === EEM_Registration::status_id_incomplete) {
602
                continue;
603
            }
604
            $select_parts[] = "COUNT($STS_code.REG_ID) as $STS_ID";
605
            $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";
606
        }
607
        //setup the selects
608
        $select .= implode(', ', $select_parts);
609
        $select .= " FROM ($inner_date_query) AS dates LEFT JOIN $event_table as Event ON Event.ID = dates.EVT_ID LEFT JOIN ";
610
        //setup remaining joins
611
        $join .= implode(" LEFT JOIN ", $join_parts);
612
        //now put it all together
613
        $query = $select . $join . ' GROUP BY Registration_Event';
614
        //and execute
615
        $results = $wpdb->get_results($query, ARRAY_A);
616
        return $results;
617
    }
618
619
620
621
    /**
622
     * Returns the EE_Registration of the primary attendee on the transaction id provided
623
     *
624
     * @param int $TXN_ID
625
     * @return EE_Registration
626
     */
627
    public function get_primary_registration_for_transaction_ID($TXN_ID = 0)
628
    {
629
        if ( ! $TXN_ID) {