/** * Filter the "Orders" list to show only orders associated with a specific subscription. * * @param string $where * @param string $request * @return string * @since 2.0 */ public static function filter_orders($where) { global $typenow, $wpdb; if (is_admin() && 'shop_order' == $typenow) { $related_orders = array(); if (isset($_GET['_subscription_related_orders']) && $_GET['_subscription_related_orders'] > 0) { $subscription_id = absint($_GET['_subscription_related_orders']); $subscription = wcs_get_subscription($subscription_id); if (!wcs_is_subscription($subscription)) { // translators: placeholder is a number wcs_add_admin_notice(sprintf(__('We can\'t find a subscription with ID #%d. Perhaps it was deleted?', 'woocommerce-subscriptions'), $subscription_id), 'error'); $where .= " AND {$wpdb->posts}.ID = 0"; } else { self::$found_related_orders = true; $where .= sprintf(" AND {$wpdb->posts}.ID IN (%s)", implode(',', array_map('absint', array_unique($subscription->get_related_orders('ids'))))); } } } return $where; }
* The 'select_subscription' flag is picked up by JavaScript to set the value of the product type to "Subscription". * * @since 1.0 */ public static function add_subscription_url($show_pointers = true) { $add_subscription_url = admin_url('post-new.php?post_type=product&select_subscription=true'); if ($show_pointers == true) { $add_subscription_url = add_query_arg('subscription_pointers', 'true', $add_subscription_url); } return $add_subscription_url; } /** * Searches through the list of active plugins to find WooCommerce. Just in case * WooCommerce resides in a folder other than /woocommerce/ * * @since 1.0 */ public static function get_woocommerce_plugin_dir_file() { foreach (get_option('active_plugins', array()) as $plugin) { if (substr($plugin, strlen('/woocommerce.php') * -1) === '/woocommerce.php') { $woocommerce_plugin_file = $plugin; break; } } return $woocommerce_plugin_file; } } WC_Subscriptions_Admin::init();
/** * Include Docs & Settings links on the Plugins administration screen * * @param mixed $links * @since 1.4 */ public static function action_links($links) { $plugin_links = array('<a href="' . WC_Subscriptions_Admin::settings_tab_url() . '">' . __('Settings', 'woocommerce-subscriptions') . '</a>', '<a href="http://docs.woothemes.com/document/subscriptions/">' . __('Docs', 'woocommerce-subscriptions') . '</a>', '<a href="http://support.woothemes.com">' . __('Support', 'woocommerce-subscriptions') . '</a>'); return array_merge($plugin_links, $links); }
/** * The text to display before any sign-ups. * * @since 1.0 */ public function no_items() { if (isset($_GET['_customer_user']) || !empty($_GET['_customer_user'])) { $user = get_user_by('id', intval($_GET['_customer_user'])); } if (isset($_REQUEST['_product_id']) || isset($_REQUEST['_product_id'])) { $product = get_product(intval($_GET['_product_id'])); } if (isset($_GET['_customer_user']) || !empty($_GET['_customer_user'])) { ?> <?php if (isset($_REQUEST['_product_id']) || isset($_REQUEST['_product_id'])) { ?> <p><?php printf(__('%s has not purchased %s%s%s (#%s).', WC_Subscriptions::$text_domain), $user->display_name, '<em>', $product->get_title(), '</em>', intval($_GET['_product_id'])); ?> </p> <?php } else { ?> <p><?php printf(__('%s has not purchased any subscriptions.', WC_Subscriptions::$text_domain), $user->display_name); ?> </p> <?php } ?> <?php } elseif (isset($_REQUEST['_product_id']) || isset($_REQUEST['_product_id'])) { ?> <p><?php printf(__('No one has purchased %s%s%s (#%s) yet.', WC_Subscriptions::$text_domain), '<em>', $product->get_title(), '</em>', intval($_GET['_product_id'])); ?> </p> <?php } elseif (isset($_REQUEST['s'])) { ?> <p><?php printf(__('No subscriptions found to have a subscriber name, email, title or order ID matching "%s".', WC_Subscriptions::$text_domain), '<em>' . esc_attr($_REQUEST['s']) . '</em>'); ?> </p> <?php } else { ?> <p><?php _e('Subscriptions will appear here for you to view and manage once purchased by a customer.', WC_Subscriptions::$text_domain); ?> </p> <p><?php printf(__('%sLearn more about managing subscriptions%s', WC_Subscriptions::$text_domain), '<a href="http://docs.woothemes.com/document/store-manager-guide/#managingsubscriptions" target="_blank">', ' »</a>'); ?> </p> <p><?php printf(__('%sAdd a subscription product%s', WC_Subscriptions::$text_domain), '<a href="' . WC_Subscriptions_Admin::add_subscription_url() . '">', ' »</a>'); ?> </p> <?php } }
/** * Checks on each admin page load if Subscriptions plugin is activated. * * Apparently the official WP API is "lame" and it's far better to use an upgrade routine fired on admin_init: http://core.trac.wordpress.org/ticket/14170 * * @since 1.1 */ public static function maybe_activate_woocommerce_subscriptions() { global $wpdb; $is_active = get_option(WC_Subscriptions_Admin::$option_prefix . '_is_active', false); if ($is_active == false) { // Add the "Subscriptions" product type if (!get_term_by('slug', sanitize_title(self::$name), 'product_type')) { wp_insert_term(self::$name, 'product_type'); } // If no Subscription settings exist, its the first activation, so add defaults if (get_option(WC_Subscriptions_Admin::$option_prefix . '_cancelled_role', false) == false) { WC_Subscriptions_Admin::add_default_settings(); } add_option(WC_Subscriptions_Admin::$option_prefix . '_is_active', true); set_transient(self::$activation_transient, true, 60 * 60); do_action('woocommerce_subscriptions_activated'); } }
/** * Set a translation safe screen ID for Subcsription * * @since 1.3.3 */ public static function set_admin_screen_id() { self::$admin_screen_id = apply_filters('woocommerce_subscriptions_screen_id', 'woocommerce_page_subscriptions'); }
/** * Include Docs & Settings links on the Plugins administration screen * * @access public * @param mixed $links * @since 1.0.0 */ public static function action_links($links) { $plugin_links = array('<a href="' . WC_Subscriptions_Admin::settings_tab_url() . '">' . __('Settings', 'woocommerce-skip-one') . '</a>', '<a href="#">' . _x('Docs', 'short for documents', 'woocommerce-skip-one') . '</a>', '<a href="#">' . __('Support', 'woocommerce-skip-one') . '</a>'); return array_merge($plugin_links, $links); }
/** * Returns the columns for the Manage Subscriptions table, specifically used for adding the * show/hide column screen options. * * @since 1.3.1 */ public static function get_subscriptions_list_table() { if (!isset(self::$subscriptions_list_table)) { if (!class_exists('WC_Subscriptions_List_Table')) { require_once 'class-wc-subscriptions-list-table.php'; } self::$subscriptions_list_table = new WC_Subscriptions_List_Table(); } return self::$subscriptions_list_table; }
/** * The text to display before any sign-ups. * * @since 1.0 */ public function no_items() { echo '<p>'; _e('Subscriptions will appear here for you to view and manage once purchased by a customer.', WC_Subscriptions::$text_domain); echo '</p>'; echo '<p>'; printf(__('%sMore about managing subscriptions%s', WC_Subscriptions::$text_domain), '<a href="http://wcdocs.woothemes.com/user-guide/extensions/subscriptions/store-manager-guide/#section-3" target="_blank">', ' »</a>'); echo '</p>'; echo '<p>'; printf(__('%sAdd a subscription product%s', WC_Subscriptions::$text_domain), '<a href="' . WC_Subscriptions_Admin::add_subscription_url() . '">', ' »</a>'); echo '</p>'; }
/** * The text to display before any sign-ups. * * @since 1.0 */ public function no_items() { if (isset($_GET['_customer_user']) && !empty($_GET['_customer_user'])) { $user = get_user_by('id', intval($_GET['_customer_user'])); } if (isset($_REQUEST['_product_id']) && !empty($_GET['_product_id'])) { $product = get_product(intval($_GET['_product_id'])); } if (isset($_GET['_customer_user']) && !empty($_GET['_customer_user'])) { if (isset($_REQUEST['_product_id'])) { if (isset($_GET['status']) && 'all' !== $_GET['status']) { ?> <p><?php printf(__('%s has no subscription to %s%s%s (#%s) with the status "%s".', WC_Subscriptions::$text_domain), $user->display_name, '<em>', $product->get_title(), '</em>', intval($_GET['_product_id']), $_GET['status']); ?> </p> <?php } else { ?> <p><?php printf(__('%s has not purchased %s%s%s (#%s).', WC_Subscriptions::$text_domain), $user->display_name, '<em>', $product->get_title(), '</em>', intval($_GET['_product_id'])); ?> </p> <?php } ?> <?php } else { ?> <p><?php printf(__('%s has not purchased any subscriptions.', WC_Subscriptions::$text_domain), $user->display_name); ?> </p> <?php } ?> <?php } elseif (isset($_REQUEST['_product_id']) && !empty($_GET['_product_id'])) { ?> <?php if (isset($_GET['status']) && 'all' !== $_GET['status']) { ?> <p><?php printf(__('There are no subscriptions to %s%s%s (#%s) with the status "%s".', WC_Subscriptions::$text_domain), '<em>', $product->get_title(), '</em>', intval($_GET['_product_id']), $_GET['status']); ?> </p> <?php } else { ?> <p><?php printf(__('No one has purchased %s%s%s (#%s) yet.', WC_Subscriptions::$text_domain), '<em>', $product->get_title(), '</em>', intval($_GET['_product_id'])); ?> </p> <?php } ?> <?php } else { ?> <p><?php _e('Subscriptions will appear here for you to view and manage once purchased by a customer.', WC_Subscriptions::$text_domain); ?> </p> <p><?php printf(__('%sLearn more about managing subscriptions%s', WC_Subscriptions::$text_domain), '<a href="http://docs.woothemes.com/document/store-manager-guide/#section-3" target="_blank">', ' »</a>'); ?> </p> <p><?php printf(__('%sAdd a subscription product%s', WC_Subscriptions::$text_domain), '<a href="' . WC_Subscriptions_Admin::add_subscription_url() . '">', ' »</a>'); ?> </p> <?php } }
public static function maybe_activate_woocommerce_subscriptions() { global $wpdb; $is_active = get_option(WC_Subscriptions_Admin::$option_prefix . '_is_active', false); $active_version = get_option(WC_Subscriptions_Admin::$option_prefix . '_active_version', '0'); if ($is_active == false || version_compare($active_version, self::$version, '<')) { // Update meta keys for 1.1 to 1.1.1 multisite changes if (version_compare($active_version, '1.1.1', '<')) { $updated_count = $wpdb->update($wpdb->usermeta, array('meta_key' => $wpdb->get_blog_prefix() . WC_Subscriptions_Manager::$users_meta_key), array('meta_key' => WC_Subscriptions_Manager::$users_meta_key)); } // Fix any products that were incorrectly added as a subscription for a user in 1.1.2 if (version_compare($active_version, '1.1.3', '<')) { foreach (get_users() as $user) { $users_subscriptions = WC_Subscriptions_Manager::get_users_subscriptions($user->ID); foreach ($users_subscriptions as $subscription_key => $subscription_details) { if (!isset($subscription_details['order_id'])) { WC_Subscriptions_Manager::remove_users_subscription($user->ID, $subscription_key); } } } } // Add the "Subscriptions" product type if it doesn't exist if (!get_term_by('slug', sanitize_title(self::$name), 'product_type')) { wp_insert_term(self::$name, 'product_type'); } // If no Subscription settings exist, add defaults if (get_option(WC_Subscriptions_Admin::$option_prefix . '_cancelled_role', false) == false) { WC_Subscriptions_Admin::add_default_settings(); } add_option(WC_Subscriptions_Admin::$option_prefix . '_is_active', true); update_option(WC_Subscriptions_Admin::$option_prefix . '_active_version', self::$version); set_transient(self::$activation_transient, true, 60 * 60); do_action('woocommerce_subscriptions_activated'); } }
/** * The text to display before any sign-ups. * * @since 1.0 */ public function no_items() { if (isset($_REQUEST['s'])) { ?> <p><?php printf(__('No subscriptions found to have a subscriber name, email, title or order ID matching "%s".', WC_Subscriptions::$text_domain), '<em>' . esc_attr($_REQUEST['s']) . '</em>'); ?> </p> <?php } else { ?> <p><?php _e('Subscriptions will appear here for you to view and manage once purchased by a customer.', WC_Subscriptions::$text_domain); ?> </p> <p><?php printf(__('%sMore about managing subscriptions%s', WC_Subscriptions::$text_domain), '<a href="http://wcdocs.woothemes.com/user-guide/extensions/subscriptions/store-manager-guide/#section-4" target="_blank">', ' »</a>'); ?> </p> <p><?php printf(__('%sAdd a subscription product%s', WC_Subscriptions::$text_domain), '<a href="' . WC_Subscriptions_Admin::add_subscription_url() . '">', ' »</a>'); ?> </p> <?php } }