Changeset 2579524
- Timestamp:
- 08/06/2021 08:16:13 PM (5 years ago)
- Location:
- groups-for-membermouse/trunk
- Files:
-
- 2 edited
-
groups-for-membermouse.php (modified) (8 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
groups-for-membermouse/trunk/groups-for-membermouse.php
r2509700 r2579524 4 4 * Plugin Name: Groups for MemberMouse 5 5 * Description: Adds group support to MemberMouse. You can define different types of groups allowing a single customer to pay for multiple seats and members to join existing groups for free or for a price based on how you configure the group type. <strong>Requires MemberMouse to activate and use.</strong> 6 * Version: 2.0. 56 * Version: 2.0.6 7 7 * Author: Mintun Media 8 8 * Plugin URI: https://www.mintunmedia.com … … 16 16 17 17 if (!(DEFINED('MGROUP_DIR'))) DEFINE('MGROUP_DIR', plugins_url('groups-for-membermouse')); 18 if (!(DEFINED('MGROUP_PATH'))) DEFINE('MGROUP_PATH', plugin_dir_path(__FILE__)); 18 19 if (!(DEFINED('MGROUP_IMG'))) DEFINE('MGROUP_IMG', plugins_url('images/', __FILE__)); 19 20 … … 95 96 add_shortcode('MM_Group_SignUp_Link', array(&$this, 'MemberMouseGroupPurchaseLinkShortcode')); 96 97 add_action('plugins_loaded', array($this, 'plugins_loaded')); 98 add_action('template_redirect', array($this, 'checkout_groups_protection')); 99 add_action('wp_enqueue_scripts', array($this, 'frontend_enqueues')); 97 100 98 101 // Admin Notices … … 636 639 637 640 /** 641 * Frontend Enqueues 642 */ 643 public function frontend_enqueues() { 644 wp_register_script('groups-checkout', MGROUP_DIR . "/js/checkout.js", array('jquery'), filemtime(MGROUP_PATH . "js/checkout.js"), true); 645 wp_register_script('sweetalert', '//cdn.jsdelivr.net/npm/sweetalert2@11'); 646 647 $cfe = new MM_CorePageEngine(); 648 $checkout_page_id = $cfe->getCorePageIdByRefType(MM_CorePageType::$CHECKOUT, null, null); 649 if (is_page($checkout_page_id)) { 650 wp_enqueue_script('groups-checkout'); 651 wp_enqueue_script('sweetalert'); 652 } 653 } 654 655 /** 638 656 * Member Added to MemberMouse - Check if it's a group purchase and add to Groups table 639 657 */ … … 644 662 global $wpdb; 645 663 646 write_groups_log($data, "MemberMouseGroupMemberAdded", true);664 write_groups_log($data, __METHOD__, true); 647 665 648 666 $groupId = get_option("mm_custom_field_group_id"); … … 670 688 // Group Member. Custom Field contains group ID (g##) 671 689 690 /** 691 * Check if Group is Active 692 */ 672 693 $gID = substr($cf, 1); 673 $sql = "SELECT * FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $gID . "'"; 674 $result = $wpdb->get_row($sql); 675 676 if ($result) { 677 $groupSize = $result->group_size; 678 $groupId = $result->id; 679 $sSql = "SELECT COUNT(id) AS count FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $gID . "'"; 680 $sRes = $wpdb->get_row($sSql); 681 $gCount = $sRes->count; 682 683 if ($gCount < $groupSize) { 684 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets_members (id,group_id,member_id,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "',now(),now())"; 685 $query = $wpdb->query($sql); 686 } else { 687 // Reached Group Capacity. Do not add member 688 $groupSql = "SELECT group_leader FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $groupId . "'"; 689 $groupResult = $wpdb->get_row($groupSql); 690 $group_leader = $groupResult->group_leader; 691 692 // Add notices to DB 693 $adminSql = "INSERT INTO " . $wpdb->prefix . "group_notices (id,group_id,user_id,leader_id,msg_type,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "','" . $group_leader . "','0',now(),now())"; 694 $adminQuery = $wpdb->query($adminSql); 695 696 $leaderSql = "INSERT INTO " . $wpdb->prefix . "group_notices (id,group_id,user_id,leader_id,msg_type,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "','" . $group_leader . "','1',now(),now())"; 697 $leaderQuery = $wpdb->query($leaderSql); 698 699 // Cancel member's access. 700 $user = new MM_User($memberId); 701 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 694 $is_group_active = $this->is_group_active($gID); 695 696 if ($is_group_active) { 697 /** 698 * Active Group 699 */ 700 $sql = "SELECT * FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $gID . "'"; 701 $result = $wpdb->get_row($sql); 702 703 if ($result) { 704 $groupSize = $result->group_size; 705 $groupId = $result->id; 706 $sSql = "SELECT COUNT(id) AS count FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $gID . "'"; 707 $sRes = $wpdb->get_row($sSql); 708 $gCount = $sRes->count; 709 710 if ($gCount < $groupSize) { 711 // There's space in this group. Add them. 712 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets_members (id,group_id,member_id,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "',now(),now())"; 713 $query = $wpdb->query($sql); 714 } else { 715 // Reached Group Capacity. Do not add member 716 $groupSql = "SELECT group_leader FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $groupId . "'"; 717 $groupResult = $wpdb->get_row($groupSql); 718 $group_leader = $groupResult->group_leader; 719 720 // Add notices to DB 721 $adminSql = "INSERT INTO " . $wpdb->prefix . "group_notices (id,group_id,user_id,leader_id,msg_type,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "','" . $group_leader . "','0',now(),now())"; 722 $adminQuery = $wpdb->query($adminSql); 723 724 $leaderSql = "INSERT INTO " . $wpdb->prefix . "group_notices (id,group_id,user_id,leader_id,msg_type,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "','" . $group_leader . "','1',now(),now())"; 725 $leaderQuery = $wpdb->query($leaderSql); 726 727 // Cancel member's access. 728 $user = new MM_User($memberId); 729 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 730 } 702 731 } 732 } else { 733 /** 734 * Group is Not Active 735 * - Do not give access 736 * - Change status of user to groups status 737 */ 738 $user = new MM_User($memberId); 739 $user->setStatus(MM_Status::$CANCELED); 740 $user->commitStatusOnly(); 703 741 } 704 742 } … … 706 744 } 707 745 746 /** 747 * Check if Group ID is Active 748 * 749 * @param int $group_id 750 * 751 * @return bool 752 */ 753 public function is_group_active($group_id) { 754 global $wpdb; 755 $sql = "SELECT group_status FROM {$wpdb->prefix}group_sets WHERE id={$group_id}"; 756 $result = $wpdb->get_row($sql); 757 758 if ($result->group_status == 0) { 759 return false; 760 } else { 761 return true; 762 } 763 } 708 764 /** 709 765 * Group Leader Member Status Changed. … … 850 906 return $result; 851 907 } 908 909 /** 910 * Checkout Page Protection 911 * - if user is attempting to join a group that is not active, redirect them 912 * to the generic product page with query string added to URL to show jquery popup 913 * 914 * @return void 915 */ 916 public function checkout_groups_protection() { 917 $cfe = new MM_CorePageEngine(); 918 $checkout_page_id = $cfe->getCorePageIdByRefType(MM_CorePageType::$CHECKOUT, null, null); 919 if (!is_page($checkout_page_id)) { 920 return; 921 } 922 923 $custom_field = get_option('mm_custom_field_group_id'); 924 $group_query = "cf_{$custom_field}"; 925 if (isset($_GET[$group_query]) && $_GET[$group_query] !== '') { 926 $group_id = $_GET[$group_query]; 927 $group_id = substr($group_id, 1); 928 929 if (!$this->is_group_active($group_id)) { 930 // Group is not active. Redirect to default product checkout 931 $checkout_url = MM_CorePageEngine::getUrl(MM_CorePageType::$CHECKOUT, ''); 932 $error_message = urlencode('Groups is not active'); 933 $query = "groups-error={$error_message}"; 934 935 /** 936 * Filter the redirect URL. 937 * @param $group_id 938 */ 939 $redirect_url = apply_filters('groups-mm-group-expired-redirect', "{$checkout_url}?{$query}", $group_id); 940 941 header("Location: {$redirect_url}"); 942 exit(); 943 } 944 } 945 } 852 946 } // End Class 853 947 } // End if class exists -
groups-for-membermouse/trunk/readme.txt
r2509700 r2579524 3 3 Tags: membermouse, member management, membership site, groups, mm groups, groups for membermouse, membermouse groups 4 4 Requires at least: 4.8 5 Tested up to: 5. 75 Tested up to: 5.8 6 6 Requires PHP: 5.6 7 7 Stable tag: trunk … … 70 70 71 71 == Changelog == 72 2.0.6 Added support for members being able to sign up for a cancelled group and given full access. Now redirects to default checkout and shows a popup error. If somehow someone gets through, there's extra support to cancel their membership in the site based on the group's status being cancelled. 73 72 74 2.0.5 Improved Group Leader status change handler to include Expired status. Now if a group leader expires, all their group members under them will also expire. 73 75
Note: See TracChangeset
for help on using the changeset viewer.