File "class-wc-customer-download.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-customer-download.php
File
size: 5.69 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Customer_Download extends WC_Data implements ArrayAccess
{
protected $object_type = 'customer_download';
protected $data = array('download_id' => '', 'product_id' => 0, 'user_id' => 0, 'user_email' => '', 'order_id' => 0, 'order_key' => '', 'downloads_remaining' => '', 'access_granted' => null, 'access_expires' => null, 'download_count' => 0);
public function __construct($download = 0)
{
parent::__construct($download);
if (is_numeric($download) && $download > 0) {
$this->set_id($download);
} elseif ($download instanceof self) {
$this->set_id($download->get_id());
} elseif (is_object($download) && !empty($download->permission_id)) {
$this->set_id($download->permission_id);
$this->set_props((array) $download);
$this->set_object_read(true);
} else {
$this->set_object_read(true);
}
$this->data_store = WC_Data_Store::load('customer-download');
if ($this->get_id() > 0) {
$this->data_store->read($this);
}
}
public function get_download_id($context = 'view')
{
return $this->get_prop('download_id', $context);
}
public function get_product_id($context = 'view')
{
return $this->get_prop('product_id', $context);
}
public function get_user_id($context = 'view')
{
return $this->get_prop('user_id', $context);
}
public function get_user_email($context = 'view')
{
return $this->get_prop('user_email', $context);
}
public function get_order_id($context = 'view')
{
return $this->get_prop('order_id', $context);
}
public function get_order_key($context = 'view')
{
return $this->get_prop('order_key', $context);
}
public function get_downloads_remaining($context = 'view')
{
return $this->get_prop('downloads_remaining', $context);
}
public function get_access_granted($context = 'view')
{
return $this->get_prop('access_granted', $context);
}
public function get_access_expires($context = 'view')
{
return $this->get_prop('access_expires', $context);
}
public function get_download_count($context = 'view')
{
$data_store = WC_Data_Store::load('customer-download-log');
$download_log_ids = $data_store->get_download_logs_for_permission($this->get_id());
$download_log_count = 0;
if (!empty($download_log_ids)) {
$download_log_count = count($download_log_ids);
}
$download_count_prop = $this->get_prop('download_count', $context);
return max($download_log_count, $download_count_prop);
}
public function set_download_id($value)
{
$this->set_prop('download_id', $value);
}
public function set_product_id($value)
{
$this->set_prop('product_id', absint($value));
}
public function set_user_id($value)
{
$this->set_prop('user_id', absint($value));
}
public function set_user_email($value)
{
$this->set_prop('user_email', sanitize_email($value));
}
public function set_order_id($value)
{
$this->set_prop('order_id', absint($value));
}
public function set_order_key($value)
{
$this->set_prop('order_key', $value);
}
public function set_downloads_remaining($value)
{
$this->set_prop('downloads_remaining', '' === $value ? '' : absint($value));
}
public function set_access_granted($date = null)
{
$this->set_date_prop('access_granted', $date);
}
public function set_access_expires($date = null)
{
$this->set_date_prop('access_expires', $date);
}
public function set_download_count($value)
{
$this->set_prop('download_count', absint($value));
}
public function track_download($user_id = null, $user_ip_address = null)
{
global $wpdb;
if (!($this->get_id() > 0)) {
throw new Exception(__('Invalid permission ID.', 'woocommerce'));
}
$query = $wpdb->prepare("\nUPDATE {$wpdb->prefix}woocommerce_downloadable_product_permissions\nSET download_count = download_count + 1,\ndownloads_remaining = IF( downloads_remaining = '', '', GREATEST( 0, downloads_remaining - 1 ) )\nWHERE permission_id = %d", $this->get_id());
$wpdb->query($query);
$this->data_store->read($this);
$download_log = new WC_Customer_Download_Log();
$download_log->set_timestamp(current_time('timestamp', true));
$download_log->set_permission_id($this->get_id());
if (!is_null($user_id)) {
$download_log->set_user_id($user_id);
}
if (!is_null($user_ip_address)) {
$download_log->set_user_ip_address($user_ip_address);
}
$download_log->save();
}
public function offsetGet($offset)
{
if (is_callable(array($this, "get_{$offset}"))) {
return $this->{"get_{$offset}"}();
}
}
public function offsetSet($offset, $value)
{
if (is_callable(array($this, "set_{$offset}"))) {
$this->{"set_{$offset}"}($value);
}
}
public function offsetUnset($offset)
{
if (is_callable(array($this, "set_{$offset}"))) {
$this->{"set_{$offset}"}('');
}
}
public function offsetExists($offset)
{
return in_array($offset, array_keys($this->data), true);
}
public function __isset($key)
{
return in_array($key, array_keys($this->data), true);
}
public function __get($key)
{
if (is_callable(array($this, "get_{$key}"))) {
return $this->{"get_{$key}"}('');
}
}
}