TSJ_Subscription Class Documentation

Overview

The TSJ_Subscription class extends WooCommerce’s WC_Data class to provide additional functionality for managing subscriptions in The Golfer’s Journal system. It handles subscription-specific data, entitlements, shipping, and various subscription-related operations.

Class Properties

Protected Properties

  • $data: Array containing subscription data with default values:
    • start_issue_number: Starting issue number (default: 0)
    • expiry_issue_number: Expiry issue number (default: 0)
    • copies_owed: Number of copies owed (default: 0)
    • deferred_amount: Deferred amount (default: 0.0)
    • includes_current_issue: Whether includes current issue (default: false)
    • issue_shipping_basis: Shipping basis (default: null)
    • shipping_soundex: Shipping soundex code (default: null)
    • shipping_address_key: Shipping address key (default: null)
    • current_expiry_group_entry_id: Current expiry group entry ID (default: 0)
    • initial_entitlements: Initial entitlements count (default: 0)
    • initial_entitlement_amount: Initial entitlement amount (default: 0.00)
    • renewal_entitlements: Renewal entitlements count (default: 0)
    • renewal_entitlement_amount: Renewal entitlement amount (default: 0.00)
    • gift_notification_date: Gift notification date (default: ‘’)
    • duplicate_checked: Whether duplicate checked (default: false)
    • benefactor_subscription: Whether benefactor subscription (default: false)
    • sku: SKU (default: ‘’)
    • dubious: Whether subscription is dubious (default: false)
  • $data_store_name: Name of the data store (‘tsj_subscription’)
  • $tsj_object_type: Object type (‘tsj_subscription’)

Constructor

public function __construct($subscription)

Initializes a new subscription instance. Accepts:

  • Numeric ID
  • Existing TSJ_Subscription instance
  • Object with ID property

Core Methods

Issue Management

  • get_start_issue_number(): Get starting issue number
  • set_start_issue_number(int $issue_id): Set starting issue number
  • get_expiry_issue_number(): Get expiry issue number
  • set_expiry_issue_number(int $issue_id): Set expiry issue number
  • get_start_issue_id(): Get starting issue ID
  • get_expiry_issue_id(): Get expiry issue ID
  • get_subscription_issues(): Get all subscription issues
  • has_subscription_issue(int $issue_id): Check if subscription has specific issue
  • get_subscription_issue_id(int $issue_id): Get subscription issue ID
  • get_shipped_issue_ids(): Get IDs of shipped issues

Entitlements Management

  • get_copies_owed(): Get number of copies owed
  • set_copies_owed(int $copies_owed): Set number of copies owed
  • reduce_copies_owed(int $number_copies): Reduce copies owed
  • get_initial_entitlements(): Get initial entitlements
  • set_initial_entitlements(int $entitlements): Set initial entitlements
  • get_initial_entitlement_amount(): Get initial entitlement amount
  • set_initial_entitlement_amount(float $amount): Set initial entitlement amount
  • get_renewal_entitlements(): Get renewal entitlements
  • set_renewal_entitlements(int $entitlements): Set renewal entitlements
  • get_renewal_entitlement_amount(): Get renewal entitlement amount
  • set_renewal_entitlement_amount(float $amount): Set renewal entitlement amount

Financial Management

  • get_deferred_amount(): Get deferred amount
  • set_deferred_amount(float $amount): Set deferred amount
  • get_lifetime_earned_incremental(): Get lifetime earned incremental amount

Shipping Management

  • get_issue_shipping_basis(): Get issue shipping basis
  • set_issue_shipping_basis(string $basis): Set issue shipping basis
  • recompute_issue_shipping_basis(): Recompute shipping basis
  • get_shipping_soundex(): Get shipping soundex
  • set_shipping_soundex(string $soundex): Set shipping soundex
  • get_shipping_address_key(): Get shipping address key
  • set_shipping_address_key(string $key): Set shipping address key

Status and Validation

  • get_duplicate_checked(): Check if duplicate checked
  • set_duplicate_checked(bool $checked): Set duplicate checked status
  • get_benefactor_subscription(): Check if benefactor subscription
  • set_benefactor_subscription(bool $status): Set benefactor subscription status
  • get_dubious(): Check if subscription is dubious
  • set_dubious(bool $status): Set dubious status
  • is_monthly(): Check if subscription is monthly
  • is_comp(): Check if subscription is comp

Product Management

  • get_underlying_product_id(): Get underlying product ID
  • get_issues_per_term(): Get number of issues per term
  • get_sku(): Get SKU
  • set_sku(string $sku): Set SKU

Gift Management

  • get_gift_notification_date(): Get gift notification date
  • set_gift_notification_date(string $date): Set gift notification date

Statistics and Reporting

  • get_lifetime_issues_shipped(): Get count of lifetime shipped issues
  • get_lifetime_issues_pulled(): Get count of lifetime pulled issues
  • get_reship_count(): Get reship count

Database Operations

  • save(): Save subscription data
  • delete(bool $force_delete): Delete subscription

Taxonomy Registration

  • register_taxonomies(): Register custom taxonomies:
    • tsj_shipping_basis
    • tsj_special
    • jc_concierge
    • journal_marketing

Usage Example

// Create new subscription
$subscription = new TSJ_Subscription($subscription_id);

// Get subscription details
$start_issue = $subscription->get_start_issue_number();
$copies_owed = $subscription->get_copies_owed();
$shipped_issues = $subscription->get_shipped_issue_ids();

// Update subscription
$subscription->set_copies_owed(5);
$subscription->save();

Notes

  • The class extends WooCommerce’s WC_Data class for data management
  • Uses WordPress/WooCommerce functions for data storage and retrieval
  • Implements custom taxonomies for subscription categorization
  • Handles both physical and digital subscription types
  • Manages subscription entitlements and shipping status