@@ 315-366 (lines=52) @@ | ||
312 | * @return stdClass[] with properties Registration_REG_date and a column for each registration status as the STS_ID |
|
313 | * (i.e. RAP) |
|
314 | */ |
|
315 | public function get_registrations_per_day_and_per_status_report( $period = '-1 month' ) { |
|
316 | global $wpdb; |
|
317 | $registration_table = $wpdb->prefix . 'esp_registration'; |
|
318 | $event_table = $wpdb->posts; |
|
319 | $sql_date = date("Y-m-d H:i:s", strtotime($period) ); |
|
320 | ||
321 | //prepare the query interval for displaying offset |
|
322 | $query_interval = EEH_DTT_Helper::get_sql_query_interval_for_offset( $this->get_timezone(), 'dates.REG_date' ); |
|
323 | ||
324 | //inner date query |
|
325 | $inner_date_query = "SELECT DISTINCT REG_date from $registration_table "; |
|
326 | $inner_where = " WHERE"; |
|
327 | //exclude events not authored by user if permissions in effect |
|
328 | if ( ! EE_Registry::instance()->CAP->current_user_can( 'ee_read_others_registrations', 'reg_per_event_report' ) ) { |
|
329 | $inner_date_query .= "LEFT JOIN $event_table ON ID = EVT_ID"; |
|
330 | $inner_where .= " post_author = " . get_current_user_id() . " AND"; |
|
331 | } |
|
332 | $inner_where .= " REG_date >= '$sql_date'"; |
|
333 | $inner_date_query .= $inner_where; |
|
334 | ||
335 | //start main query |
|
336 | $select = "SELECT DATE($query_interval) as Registration_REG_date, "; |
|
337 | $join = ''; |
|
338 | $join_parts = array(); |
|
339 | $select_parts = array(); |
|
340 | ||
341 | //loop through registration stati to do parts for each status. |
|
342 | foreach ( EEM_Registration::reg_status_array() as $STS_ID => $STS_code ) { |
|
343 | if ( $STS_ID === EEM_Registration::status_id_incomplete ) { |
|
344 | continue; |
|
345 | } |
|
346 | $select_parts[] = "COUNT($STS_code.REG_ID) as $STS_ID"; |
|
347 | $join_parts[] = "$registration_table AS $STS_code ON $STS_code.REG_date = dates.REG_date AND $STS_code.STS_ID = '$STS_ID'"; |
|
348 | } |
|
349 | ||
350 | //setup the selects |
|
351 | $select .= implode(', ', $select_parts ); |
|
352 | $select .= " FROM ($inner_date_query) AS dates LEFT JOIN "; |
|
353 | ||
354 | //setup the joins |
|
355 | $join .= implode( " LEFT JOIN ", $join_parts ); |
|
356 | ||
357 | //now let's put it all together |
|
358 | $query = $select . $join . ' GROUP BY Registration_REG_date'; |
|
359 | ||
360 | //and execute it |
|
361 | $results = $wpdb->get_results( |
|
362 | $query, |
|
363 | ARRAY_A |
|
364 | ); |
|
365 | return $results; |
|
366 | } |
|
367 | ||
368 | ||
369 | ||
@@ 413-461 (lines=49) @@ | ||
410 | * @return stdClass[] with properties `Registration_Event` and a column for each registration status as the STS_ID |
|
411 | * (i.e. RAP) |
|
412 | */ |
|
413 | public function get_registrations_per_event_and_per_status_report( $period = '-1 month' ) { |
|
414 | global $wpdb; |
|
415 | $registration_table = $wpdb->prefix . 'esp_registration'; |
|
416 | $event_table = $wpdb->posts; |
|
417 | $sql_date = date("Y-m-d H:i:s", strtotime($period) ); |
|
418 | ||
419 | //inner date query |
|
420 | $inner_date_query = "SELECT DISTINCT EVT_ID, REG_date from $registration_table "; |
|
421 | $inner_where = " WHERE"; |
|
422 | //exclude events not authored by user if permissions in effect |
|
423 | if ( ! EE_Registry::instance()->CAP->current_user_can( 'ee_read_others_registrations', 'reg_per_event_report' ) ) { |
|
424 | $inner_date_query .= "LEFT JOIN $event_table ON ID = EVT_ID"; |
|
425 | $inner_where .= " post_author = " . get_current_user_id() . " AND"; |
|
426 | } |
|
427 | $inner_where .= " REG_date >= '$sql_date'"; |
|
428 | $inner_date_query .= $inner_where; |
|
429 | ||
430 | //build main query |
|
431 | $select = "SELECT Event.post_title as Registration_Event, "; |
|
432 | $join = ''; |
|
433 | $join_parts = array(); |
|
434 | $select_parts = array(); |
|
435 | ||
436 | //loop through registration stati to do parts for each status. |
|
437 | foreach ( EEM_Registration::reg_status_array() as $STS_ID => $STS_code ) { |
|
438 | if ( $STS_ID === EEM_Registration::status_id_incomplete ) { |
|
439 | continue; |
|
440 | } |
|
441 | $select_parts[] = "COUNT($STS_code.REG_ID) as $STS_ID"; |
|
442 | $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"; |
|
443 | } |
|
444 | ||
445 | //setup the selects |
|
446 | $select .= implode( ', ', $select_parts ); |
|
447 | $select .= " FROM ($inner_date_query) AS dates LEFT JOIN $event_table as Event ON Event.ID = dates.EVT_ID LEFT JOIN "; |
|
448 | ||
449 | //setup remaining joins |
|
450 | $join .= implode( " LEFT JOIN ", $join_parts ); |
|
451 | ||
452 | //now put it all together |
|
453 | $query = $select . $join . ' GROUP BY Registration_Event'; |
|
454 | ||
455 | //and execute |
|
456 | $results = $wpdb->get_results( |
|
457 | $query, |
|
458 | ARRAY_A |
|
459 | ); |
|
460 | return $results; |
|
461 | } |
|
462 | ||
463 | ||
464 | /** |