<?php
/**
 * Export Payments Class
 *
 * Export payment hsitory to a CSV
 *
 * @package     Restrict Content Pro
 * @subpackage  Export Class
 * @copyright   Copyright (c) 2017, Pippin Williamson
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 * @since       1.5
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) exit;

class RCP_Payments_Export extends RCP_Export {

	/**
	 * Our export type. Used for export-type specific filters / actions
	 *
	 * @access      public
	 * @var         string
	 * @since       1.5
	 */
	public $export_type = 'payments';

	/**
	 * Set the CSV columns
	 *
	 * @access      public
	 * @since       1.5
	 * @return      array
	 */
	public function csv_cols() {
		$cols = array(
			'id'               => __( 'ID',   'rcp' ),
			'subscription'     => __( 'Subscription', 'rcp' ),
			'amount'           => __( 'Amount', 'rcp' ),
			'user_id'          => __( 'User ID', 'rcp' ),
			'user_login'       => __( 'User Login', 'rcp' ),
			'payment_type'     => __( 'Payment Type', 'rcp' ),
			'subscription_key' => __( 'Subscription Key', 'rcp' ),
			'date'             => __( 'Date', 'rcp' )
		);
		return $cols;
	}

	/**
	 * Get the data being exported
	 *
	 * @access      public
	 * @since       1.5
	 * @return      array
	 */
	public function get_data() {
		global $wpdb;

		$data = array();
		$args = array();

		if( ! empty( $_POST['rcp-year'] ) ) {

			$args['date'] = array();
			$args['date']['year'] = absint( $_POST['rcp-year'] );

			if( ! empty( $_POST['rcp-month'] ) ) {

				$args['date']['month'] = absint( $_POST['rcp-month'] );

			}

		}

		$args['number'] = 999999;

		$rcp_db   = new RCP_Payments;
		$payments = $rcp_db->get_payments( $args );

		foreach ( $payments as $payment ) {

			$user   = get_userdata( $payment->user_id );

			$data[] = apply_filters( 'rcp_export_payments_get_data_row', array(
				'id'               => $payment->id,
				'subscription'     => $payment->subscription,
				'amount'           => $payment->amount,
				'user_id'          => $payment->user_id,
				'user_login'       => $user->user_login,
				'payment_type'     => $payment->payment_type,
				'subscription_key' => $payment->subscription_key,
				'date'             => $payment->date
			), $payment );

		}

		$data = apply_filters( 'rcp_export_get_data', $data );
		$data = apply_filters( 'rcp_export_get_data_' . $this->export_type, $data );

		return $data;
	}
}