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 numberset_start_issue_number(int $issue_id)
: Set starting issue numberget_expiry_issue_number()
: Get expiry issue numberset_expiry_issue_number(int $issue_id)
: Set expiry issue numberget_start_issue_id()
: Get starting issue IDget_expiry_issue_id()
: Get expiry issue IDget_subscription_issues()
: Get all subscription issueshas_subscription_issue(int $issue_id)
: Check if subscription has specific issueget_subscription_issue_id(int $issue_id)
: Get subscription issue IDget_shipped_issue_ids()
: Get IDs of shipped issues
Entitlements Management
get_copies_owed()
: Get number of copies owedset_copies_owed(int $copies_owed)
: Set number of copies owedreduce_copies_owed(int $number_copies)
: Reduce copies owedget_initial_entitlements()
: Get initial entitlementsset_initial_entitlements(int $entitlements)
: Set initial entitlementsget_initial_entitlement_amount()
: Get initial entitlement amountset_initial_entitlement_amount(float $amount)
: Set initial entitlement amountget_renewal_entitlements()
: Get renewal entitlementsset_renewal_entitlements(int $entitlements)
: Set renewal entitlementsget_renewal_entitlement_amount()
: Get renewal entitlement amountset_renewal_entitlement_amount(float $amount)
: Set renewal entitlement amount
Financial Management
get_deferred_amount()
: Get deferred amountset_deferred_amount(float $amount)
: Set deferred amountget_lifetime_earned_incremental()
: Get lifetime earned incremental amount
Shipping Management
get_issue_shipping_basis()
: Get issue shipping basisset_issue_shipping_basis(string $basis)
: Set issue shipping basisrecompute_issue_shipping_basis()
: Recompute shipping basisget_shipping_soundex()
: Get shipping soundexset_shipping_soundex(string $soundex)
: Set shipping soundexget_shipping_address_key()
: Get shipping address keyset_shipping_address_key(string $key)
: Set shipping address key
Status and Validation
get_duplicate_checked()
: Check if duplicate checkedset_duplicate_checked(bool $checked)
: Set duplicate checked statusget_benefactor_subscription()
: Check if benefactor subscriptionset_benefactor_subscription(bool $status)
: Set benefactor subscription statusget_dubious()
: Check if subscription is dubiousset_dubious(bool $status)
: Set dubious statusis_monthly()
: Check if subscription is monthlyis_comp()
: Check if subscription is comp
Product Management
get_underlying_product_id()
: Get underlying product IDget_issues_per_term()
: Get number of issues per termget_sku()
: Get SKUset_sku(string $sku)
: Set SKU
Gift Management
get_gift_notification_date()
: Get gift notification dateset_gift_notification_date(string $date)
: Set gift notification date
Statistics and Reporting
get_lifetime_issues_shipped()
: Get count of lifetime shipped issuesget_lifetime_issues_pulled()
: Get count of lifetime pulled issuesget_reship_count()
: Get reship count
Database Operations
save()
: Save subscription datadelete(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