/** * Build all the reports data * * @access public * @since 1.0 * @return array $reports_data All the data for donor reports */ public function reports_data() { $reports_data = array(); $give_forms = $this->products->posts; if ($give_forms) { foreach ($give_forms as $form) { $reports_data[] = array('ID' => $form, 'title' => get_the_title($form), 'sales' => give_get_form_sales_stats($form), 'earnings' => give_get_form_earnings_stats($form), 'average_sales' => give_get_average_monthly_form_sales($form), 'average_earnings' => give_get_average_monthly_form_earnings($form)); } } return $reports_data; }
/** * Given a give_forms post object, generate the data for the API output * * @since 1.1 * * @param object $form_info The Download Post Object * * @return array Array of post data to return back in the API */ private function get_form_data($form_info) { $form = array(); $form['info']['id'] = $form_info->ID; $form['info']['slug'] = $form_info->post_name; $form['info']['title'] = $form_info->post_title; $form['info']['create_date'] = $form_info->post_date; $form['info']['modified_date'] = $form_info->post_modified; $form['info']['status'] = $form_info->post_status; $form['info']['link'] = html_entity_decode($form_info->guid); $form['info']['content'] = get_post_meta($form_info->ID, '_give_form_content', true); $form['info']['thumbnail'] = wp_get_attachment_url(get_post_thumbnail_id($form_info->ID)); if (give_get_option('enable_categories') == 'on') { $form['info']['category'] = get_the_terms($form_info, 'give_forms_category'); $form['info']['tags'] = get_the_terms($form_info, 'give_forms_tag'); } if (give_get_option('enable_tags') == 'on') { $form['info']['tags'] = get_the_terms($form_info, 'give_forms_tag'); } if (user_can($this->user_id, 'view_give_reports') || $this->override) { $form['stats']['total']['donations'] = give_get_form_sales_stats($form_info->ID); $form['stats']['total']['earnings'] = give_get_form_earnings_stats($form_info->ID); $form['stats']['monthly_average']['donations'] = give_get_average_monthly_form_sales($form_info->ID); $form['stats']['monthly_average']['earnings'] = give_get_average_monthly_form_earnings($form_info->ID); } $counter = 0; if (give_has_variable_prices($form_info->ID)) { foreach (give_get_variable_prices($form_info->ID) as $price) { $counter++; //muli-level item $level = isset($price['_give_text']) ? $price['_give_text'] : 'level-' . $counter; $form['pricing'][sanitize_key($level)] = $price['_give_amount']; } } else { $form['pricing']['amount'] = give_get_form_price($form_info->ID); } if (user_can($this->user_id, 'view_give_sensitive_data') || $this->override) { //Sensitive data here } return apply_filters('give_api_forms_form', $form); die; }
/** * Show report graphs of a specific product * * @since 1.0 * @return void */ function give_reports_graph_of_form($form_id = 0) { // Retrieve the queried dates $dates = give_get_report_dates(); // Determine graph options switch ($dates['range']) { case 'today': case 'yesterday': $day_by_day = true; break; case 'last_year': $day_by_day = false; break; case 'this_year': $day_by_day = false; break; case 'last_quarter': $day_by_day = false; break; case 'this_quarter': $day_by_day = false; break; case 'other': if ($dates['m_end'] - $dates['m_start'] >= 2 || $dates['year_end'] > $dates['year']) { $day_by_day = false; } else { $day_by_day = true; } break; default: $day_by_day = true; break; } $earnings_totals = (double) 0.0; // Total earnings for time period shown $sales_totals = 0; // Total sales for time period shown $earnings_data = array(); $sales_data = array(); $stats = new Give_Payment_Stats(); if ($dates['range'] == 'today' || $dates['range'] == 'yesterday') { // Hour by hour $month = $dates['m_start']; $hour = 1; $minute = 0; $second = 0; while ($hour <= 23) { if ($hour == 23) { $minute = $second = 59; } $date = mktime($hour, $minute, $second, $month, $dates['day'], $dates['year']); $date_end = mktime($hour + 1, $minute, $second, $month, $dates['day'], $dates['year']); $sales = $stats->get_sales($form_id, $date, $date_end); $sales_totals += $sales; $earnings = $stats->get_earnings($form_id, $date, $date_end); $earnings_totals += $earnings; $sales_data[] = array($date * 1000, $sales); $earnings_data[] = array($date * 1000, $earnings); $hour++; } } elseif ($dates['range'] == 'this_week' || $dates['range'] == 'last_week') { //Day by day $day = $dates['day']; $day_end = $dates['day_end']; $month = $dates['m_start']; while ($day <= $day_end) { $date = mktime(0, 0, 0, $month, $day, $dates['year']); $date_end = mktime(0, 0, 0, $month, $day + 1, $dates['year']); $sales = $stats->get_sales($form_id, $date, $date_end); $sales_totals += $sales; $earnings = $stats->get_earnings($form_id, $date, $date_end); $earnings_totals += $earnings; $sales_data[] = array($date * 1000, $sales); $earnings_data[] = array($date * 1000, $earnings); $day++; } } else { $y = $dates['year']; while ($y <= $dates['year_end']) { $last_year = false; if ($dates['year'] == $dates['year_end']) { $month_start = $dates['m_start']; $month_end = $dates['m_end']; $last_year = true; } elseif ($y == $dates['year']) { $month_start = $dates['m_start']; $month_end = 12; } else { $month_start = 1; $month_end = 12; } $i = $month_start; while ($i <= $month_end) { if ($day_by_day) { if ($i == $month_end && $last_year) { $num_of_days = $dates['day_end']; } else { $num_of_days = cal_days_in_month(CAL_GREGORIAN, $i, $y); } $d = $dates['day']; while ($d <= $num_of_days) { $date = mktime(0, 0, 0, $i, $d, $y); $end_date = mktime(23, 59, 59, $i, $d, $y); $sales = $stats->get_sales($form_id, $date, $end_date); $sales_totals += $sales; $earnings = $stats->get_earnings($form_id, $date, $end_date); $earnings_totals += $earnings; $sales_data[] = array($date * 1000, $sales); $earnings_data[] = array($date * 1000, $earnings); $d++; } } else { $num_of_days = cal_days_in_month(CAL_GREGORIAN, $i, $y); $date = mktime(0, 0, 0, $i, 1, $y); $end_date = mktime(23, 59, 59, $i, $num_of_days, $y); $sales = $stats->get_sales($form_id, $date, $end_date); $sales_totals += $sales; $earnings = $stats->get_earnings($form_id, $date, $end_date); $earnings_totals += $earnings; $sales_data[] = array($date * 1000, $sales); $earnings_data[] = array($date * 1000, $earnings); } $i++; } $y++; } } $data = array(__('Income', 'give') => $earnings_data, __('Donations', 'give') => $sales_data); ?> <h3><span><?php printf(__('Income Over Time for %s', 'give'), get_the_title($form_id)); ?> </span></h3> <div class="metabox-holder" style="padding-top: 0;"> <div class="postbox"> <div class="inside"> <?php $graph = new Give_Graph($data); $graph->set('x_mode', 'time'); $graph->set('multiple_y_axes', true); $graph->display(); ?> </div> </div> <!--/.postbox --> <table class="widefat reports-table alignleft" style="max-width:450px"> <tbody> <tr> <td class="row-title"> <label for="tablecell"><?php _e('Total income for period: ', 'give'); ?> </label></td> <td><?php echo give_currency_filter(give_format_amount($earnings_totals)); ?> </td> </tr> <tr class="alternate"> <td class="row-title"> <label for="tablecell"><?php _e('Total donations for period: ', 'give'); ?> </label> </td> <td><?php echo $sales_totals; ?> </td> </tr> <tr> <td class="row-title"> <label for="tablecell"><?php _e('Average monthly income: %s', 'give'); ?> </label> </td> <td><?php echo give_currency_filter(give_format_amount(give_get_average_monthly_form_earnings($form_id))); ?> </td> </tr> <tr class="alternate"> <td class="row-title"> <label for="tablecell"><?php _e('Average monthly donations: %s', 'give'); ?> </label> </td> <td><?php echo number_format(give_get_average_monthly_form_sales($form_id), 0); ?> </td> </tr> </tbody> </table> <?php give_reports_graph_controls(); ?> </div> <?php echo ob_get_clean(); }