Plugin Directory

Changeset 2579524


Ignore:
Timestamp:
08/06/2021 08:16:13 PM (5 years ago)
Author:
mintunmedia
Message:

upgrade to 2.0.6

Location:
groups-for-membermouse/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • groups-for-membermouse/trunk/groups-for-membermouse.php

    r2509700 r2579524  
    44 * Plugin Name: Groups for MemberMouse
    55 * 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.5
     6 * Version: 2.0.6
    77 * Author: Mintun Media
    88 * Plugin URI:  https://www.mintunmedia.com
     
    1616
    1717if (!(DEFINED('MGROUP_DIR'))) DEFINE('MGROUP_DIR', plugins_url('groups-for-membermouse'));
     18if (!(DEFINED('MGROUP_PATH'))) DEFINE('MGROUP_PATH', plugin_dir_path(__FILE__));
    1819if (!(DEFINED('MGROUP_IMG'))) DEFINE('MGROUP_IMG', plugins_url('images/', __FILE__));
    1920
     
    9596                add_shortcode('MM_Group_SignUp_Link', array(&$this, 'MemberMouseGroupPurchaseLinkShortcode'));
    9697                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'));
    97100
    98101                // Admin Notices
     
    636639
    637640        /**
     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        /**
    638656         * Member Added to MemberMouse - Check if it's a group purchase and add to Groups table
    639657         */
     
    644662            global $wpdb;
    645663
    646             write_groups_log($data, "MemberMouseGroupMemberAdded", true);
     664            write_groups_log($data, __METHOD__, true);
    647665
    648666            $groupId = get_option("mm_custom_field_group_id");
     
    670688                    // Group Member. Custom Field contains group ID (g##)
    671689
     690                    /**
     691                     * Check if Group is Active
     692                     */
    672693                    $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                            }
    702731                        }
     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();
    703741                    }
    704742                }
     
    706744        }
    707745
     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        }
    708764        /**
    709765         * Group Leader Member Status Changed.
     
    850906            return $result;
    851907        }
     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        }
    852946    } // End Class
    853947} // End if class exists
  • groups-for-membermouse/trunk/readme.txt

    r2509700 r2579524  
    33Tags: membermouse, member management, membership site, groups, mm groups, groups for membermouse, membermouse groups
    44Requires at least: 4.8
    5 Tested up to: 5.7
     5Tested up to: 5.8
    66Requires PHP: 5.6
    77Stable tag: trunk
     
    7070
    7171== Changelog ==
     722.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
    72742.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.
    7375
Note: See TracChangeset for help on using the changeset viewer.