/**
  * 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;
 }
Beispiel #3
0
/**
 * 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();
}