public function prepare_items() { $this->_column_headers = array($this->get_columns(), $this->get_hidden_columns(), $this->get_sortable_columns()); $total_items = MS_Addon_Invitation_Model::get_invitation_count(); $per_page = $this->get_items_per_page('invitation_per_page', 10); $current_page = $this->get_pagenum(); $args = array('posts_per_page' => $per_page, 'offset' => ($current_page - 1) * $per_page); $this->items = apply_filters('ms_addon_invitation_helper_listtable_invitation_items', MS_Addon_Invitation_Model::get_invitations($args)); $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page)); }
/** * Completely whipe all Membership data from Database. * * Note: This function is not used currently... * * @since 1.0.0 */ private static function cleanup_db() { global $wpdb; $sql = array(); $trash_ids = array(); // Delete membership meta-data from users. $users = MS_Model_Member::get_members(); foreach ($users as $user) { $user->delete_all_membership_usermeta(); $user->save(); } // Determine IDs of Membership Pages. $page_types = MS_Model_Pages::get_page_types(); foreach ($page_types as $type => $name) { $page_id = MS_Model_Pages::get_setting($type); $trash_ids[] = $page_id; } /** * Delete all plugin settings. * Settings are saved by classes that extend MS_Model_option */ foreach (MS_Model_Gateway::get_gateways() as $option) { $option->delete(); } MS_Factory::load('MS_Model_Addon')->delete(); MS_Factory::load('MS_Model_Pages')->delete(); MS_Factory::load('MS_Model_Settings')->delete(); /** * Delete transient data * Transient data is saved by classed that extend MS_Model_Transient */ MS_Factory::load('MS_Model_Simulate')->delete(); /** * Delete all plugin content. * Content is saved by classes that extend MS_Model_CustomPostType */ $ms_posttypes = array(MS_Model_Communication::get_post_type(), MS_Model_Event::get_post_type(), MS_Model_Invoice::get_post_type(), MS_Model_Transactionlog::get_post_type(), MS_Model_Membership::get_post_type(), MS_Model_Relationship::get_post_type(), MS_Addon_Coupon_Model::get_post_type(), MS_Addon_Invitation_Model::get_post_type()); foreach ($ms_posttypes as $type) { $sql[] = $wpdb->prepare("DELETE FROM {$wpdb->posts} WHERE post_type = %s;", $type); } // Remove orphaned post-metadata. $sql[] = "\n\t\tDELETE FROM {$wpdb->postmeta}\n\t\tWHERE NOT EXISTS (\n\t\t\tSELECT 1 FROM {$wpdb->posts} tmp WHERE tmp.ID = post_id\n\t\t);\n\t\t"; // Clear all WP transient cache. $sql[] = "\n\t\tDELETE FROM {$wpdb->options}\n\t\tWHERE option_name LIKE '_transient_%';\n\t\t"; foreach ($sql as $s) { $wpdb->query($s); } // Move Membership pages to trash. foreach ($trash_ids as $id) { wp_delete_post($id, true); } // Clear all data from WP Object cache. wp_cache_flush(); // Redirect to the main page. wp_safe_redirect(MS_Controller_Plugin::get_admin_url()); exit; }
/** * Called right before the payment form on the front end is displayed. * We check if the user already specified an invitation code or not. * * If no code was specified then we remove all payment buttons and display * an input field for the invitation code instead. * * @since 1.0.1.0 * @param array $data * @param int $membership_id * @param MS_Model_Relationship $subscription * @param MS_Model_Member $member */ public function check_invitation_code($data, $membership_id, $subscription, $member) { $membership = MS_Factory::load('MS_Model_Membership', $membership_id); $is_public = lib3()->is_true($membership->get_custom_data('no_invitation')); if ($is_public) { // This membership is not require an invitation code. return $data; } // invitation_code can be set via URL param or input field in form. if (!empty($_REQUEST['invitation_code'])) { $invitation = apply_filters('ms_addon_invitation_model', MS_Addon_Invitation_Model::load_by_code($_REQUEST['invitation_code'])); $invitation->save_application($subscription); } else { $invitation = MS_Addon_Invitation_Model::get_application($member->id, $membership_id); } if ($invitation && !empty($_POST['remove_invitation_code'])) { $invitation->remove_application($member->id, $membership_id); $invitation = false; } $data['invitation'] = $invitation; if ($invitation) { $data['invitation_valid'] = $invitation->is_valid($membership_id); } else { $data['invitation_valid'] = false; } if (!$data['invitation_valid']) { // User has no valid invitation yet, hide all payment buttons remove_all_actions('ms_view_frontend_payment_purchase_button'); // Also remove any other input fields from the payment form, like coupon. remove_all_actions('ms_view_frontend_payment_after_total_row'); remove_all_actions('ms_view_frontend_payment_after'); } // Show Coupon form in the payment-form. $this->add_action('ms_view_frontend_payment_purchase_button', 'payment_form_fields', 5, 3); return $data; }