2019-09-26 20:38:32 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Handles emailing users CSV Export download links.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Automattic\WooCommerce\Admin;
|
|
|
|
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Include dependencies.
|
|
|
|
*/
|
|
|
|
if ( ! class_exists( 'WC_Email', false ) ) {
|
|
|
|
include_once WC_ABSPATH . 'includes/emails/class-wc-email.php';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ReportCSVEmail Class.
|
|
|
|
*/
|
|
|
|
class ReportCSVEmail extends \WC_Email {
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*/
|
|
|
|
public function __construct() {
|
|
|
|
$this->id = 'admin_report_export_download';
|
|
|
|
$this->template_base = dirname( __DIR__ ) . '/includes/emails/';
|
|
|
|
$this->template_html = 'html-admin-report-export-download.php';
|
|
|
|
$this->template_plain = 'plain-admin-report-export-download.php';
|
|
|
|
$this->report_labels = array(
|
|
|
|
'categories' => __( 'Categories', 'woocommerce-admin' ),
|
|
|
|
'coupons' => __( 'Coupons', 'woocommerce-admin' ),
|
2020-09-25 13:57:48 +00:00
|
|
|
'customers' => __( 'Customers', 'woocommerce-admin' ),
|
2019-09-26 20:38:32 +00:00
|
|
|
'downloads' => __( 'Downloads', 'woocommerce-admin' ),
|
2020-09-25 13:57:48 +00:00
|
|
|
'orders' => __( 'Orders', 'woocommerce-admin' ),
|
|
|
|
'products' => __( 'Products', 'woocommerce-admin' ),
|
|
|
|
'revenue' => __( 'Revenue', 'woocommerce-admin' ),
|
2019-09-26 20:38:32 +00:00
|
|
|
'stock' => __( 'Stock', 'woocommerce-admin' ),
|
2020-09-25 13:57:48 +00:00
|
|
|
'taxes' => __( 'Taxes', 'woocommerce-admin' ),
|
|
|
|
'variations' => __( 'Variations', 'woocommerce-admin' ),
|
2019-09-26 20:38:32 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
// Call parent constructor.
|
|
|
|
parent::__construct();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This email has no user-facing settings.
|
|
|
|
*/
|
|
|
|
public function init_form_fields() {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This email has no user-facing settings.
|
|
|
|
*/
|
|
|
|
public function init_settings() {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return email type.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_email_type() {
|
|
|
|
return class_exists( 'DOMDocument' ) ? 'html' : 'plain';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get email heading.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_default_heading() {
|
|
|
|
return __( 'Your Report Download', 'woocommerce-admin' );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get email subject.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_default_subject() {
|
|
|
|
return __( '[{site_title}]: Your {report_name} Report download is ready', 'woocommerce-admin' );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get content html.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_content_html() {
|
|
|
|
return wc_get_template_html(
|
|
|
|
$this->template_html,
|
|
|
|
array(
|
|
|
|
'report_name' => $this->report_type,
|
|
|
|
'download_url' => $this->download_url,
|
|
|
|
'email_heading' => $this->get_heading(),
|
|
|
|
'sent_to_admin' => true,
|
|
|
|
'plain_text' => false,
|
|
|
|
'email' => $this,
|
|
|
|
),
|
|
|
|
'',
|
|
|
|
$this->template_base
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get content plain.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function get_content_plain() {
|
|
|
|
return wc_get_template_html(
|
|
|
|
$this->template_plain,
|
|
|
|
array(
|
|
|
|
'report_name' => $this->report_type,
|
|
|
|
'download_url' => $this->download_url,
|
|
|
|
'email_heading' => $this->get_heading(),
|
|
|
|
'sent_to_admin' => true,
|
|
|
|
'plain_text' => true,
|
|
|
|
'email' => $this,
|
|
|
|
),
|
|
|
|
'',
|
|
|
|
$this->template_base
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Trigger the sending of this email.
|
|
|
|
*
|
2019-11-07 18:18:05 +00:00
|
|
|
* @param int $user_id User ID to email.
|
|
|
|
* @param string $report_type The type of report export being emailed.
|
|
|
|
* @param string $download_url The URL for downloading the report.
|
2019-09-26 20:38:32 +00:00
|
|
|
*/
|
|
|
|
public function trigger( $user_id, $report_type, $download_url ) {
|
|
|
|
$user = new \WP_User( $user_id );
|
|
|
|
$this->recipient = $user->user_email;
|
|
|
|
$this->download_url = $download_url;
|
|
|
|
|
|
|
|
if ( isset( $this->report_labels[ $report_type ] ) ) {
|
Data store refactor (https://github.com/woocommerce/woocommerce-admin/pull/2961)
* Base Report data store utility functions - 1
Standardizing the data store classes will be easier if the base class contains simple utility functions
that can replace logic implemented in multiple data stores.
- set_db_table_name() assigns a WP DB table name class variable for the data store
- get_db_table_name() retrieves the WP DB table name
- prepend_table_name() prepends a field in a query fragment with the data store table name
* add context, clause handling, and filters to reports data store
* add generated SQL clauses to class properties
* reduce id getter logic to single function with filter, add phpdocs to new filters
* update table_name to private string for use in constructor
* extract SQL query clause handling to its own class
- Will allow for use in subquery processing without creating a get_data stub
- Swap parameter order in add_sql_clause for readability
- Add support for clearing multple clauses in one call
* add context var to SqlQuery class
* implement SqlQuery in Categories data store
* implement subquery in categories data store
* coupons data stores, more underlying refactor
- fix warnings
- make filtered id functions static
- add limit parameter handling
- update coupons data store
- update coupon stats data store
* refactor coupon stats data store
* refactor customers and customer stats data stores
* add context to subqueries
* add missed prepend table name call
* refactor downloads data store, fix some warnings
* fix warnings, add separator parameter to filtered IDs
* refactor taxes and tax stats data stores
* refactor variations data store
* refactor product and product stats data stores
* make table_name static throughout for compat with static hook functions
* refactor order and order stats datastores
- use consistent visibility on initialize_queries()
- update db_table_name logic to use static keyword instead of self
* fix missed whitespace
* fix segmenting query, add SqlQuery join clause
* DRY data store constructors, class properties
* prefix table name when not yet assigned
* fix unit tests, interpolations, WPDB delete calls
* DRY get_object_where_filter()
* remove redundant table prefix from unit test init
* fix refactored SQL queries
* restore product paging
* remove unused query param arrays
* add first pass on data docs readme
* remove debug code, errant SQL spacing
* refactor out outer_from query element
* merge wheres, joins before filtering
* move all report column definitions to assign_report_columns
* fix data readme markdown
* small code formating fixes from review
* remove static from query/datastore context
* missed self:: in previous, add comments, small code moves
* rename get_statement() to get_query_statement()
* remove temporary query references
* static reference, remove reference parameter, fix coupon compare
* add todo reminders
* use correct query parameter in coupon data stores
2019-11-07 17:28:37 +00:00
|
|
|
$this->report_type = $this->report_labels[ $report_type ];
|
2019-09-26 20:38:32 +00:00
|
|
|
$this->placeholders['{report_name}'] = $this->report_type;
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->send(
|
|
|
|
$this->get_recipient(),
|
|
|
|
$this->get_subject(),
|
|
|
|
$this->get_content(),
|
|
|
|
$this->get_headers(),
|
|
|
|
$this->get_attachments()
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|