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_basistsj_specialjc_conciergejournal_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_Dataclass 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