Changeset 2239384
- Timestamp:
- 02/06/2020 12:29:23 AM (6 years ago)
- Location:
- groups-for-membermouse
- Files:
-
- 47 added
- 3 edited
-
tags/2.0.3 (added)
-
tags/2.0.3/README.MD (added)
-
tags/2.0.3/css (added)
-
tags/2.0.3/css/admin.css (added)
-
tags/2.0.3/groups-for-membermouse.php (added)
-
tags/2.0.3/images (added)
-
tags/2.0.3/images/close.png (added)
-
tags/2.0.3/images/group_title_bg.png (added)
-
tags/2.0.3/images/loading.gif (added)
-
tags/2.0.3/images/pbar-animated.gif (added)
-
tags/2.0.3/includes (added)
-
tags/2.0.3/includes/activate_group.php (added)
-
tags/2.0.3/includes/add_group.php (added)
-
tags/2.0.3/includes/add_group_user.php (added)
-
tags/2.0.3/includes/cancel_group.php (added)
-
tags/2.0.3/includes/change_group_cost.php (added)
-
tags/2.0.3/includes/check_user.php (added)
-
tags/2.0.3/includes/check_username.php (added)
-
tags/2.0.3/includes/config.php (added)
-
tags/2.0.3/includes/create_group.php (added)
-
tags/2.0.3/includes/create_group_leader.php (added)
-
tags/2.0.3/includes/delete_group.php (added)
-
tags/2.0.3/includes/delete_group_data.php (added)
-
tags/2.0.3/includes/delete_group_member.php (added)
-
tags/2.0.3/includes/docs.php (added)
-
tags/2.0.3/includes/edit_group.php (added)
-
tags/2.0.3/includes/edit_group_name.php (added)
-
tags/2.0.3/includes/group_leader_form.php (added)
-
tags/2.0.3/includes/import.php (added)
-
tags/2.0.3/includes/manage.php (added)
-
tags/2.0.3/includes/manage_groups.php (added)
-
tags/2.0.3/includes/manage_groups_admin.php (added)
-
tags/2.0.3/includes/purchase_link.php (added)
-
tags/2.0.3/includes/show_help_window.php (added)
-
tags/2.0.3/includes/show_purchase_link.php (added)
-
tags/2.0.3/includes/tabs.php (added)
-
tags/2.0.3/includes/templates (added)
-
tags/2.0.3/includes/templates/mm_group_template.csv (added)
-
tags/2.0.3/includes/update_group.php (added)
-
tags/2.0.3/includes/update_group_name.php (added)
-
tags/2.0.3/index.php (added)
-
tags/2.0.3/js (added)
-
tags/2.0.3/js/admin.js (added)
-
tags/2.0.3/js/mm-group-import_wizard.js (added)
-
tags/2.0.3/readme.txt (added)
-
tags/2.0.3/templates (added)
-
tags/2.0.3/templates/mm_groups_import_template.csv (added)
-
trunk/README.MD (modified) (1 diff)
-
trunk/groups-for-membermouse.php (modified) (4 diffs)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
groups-for-membermouse/trunk/README.MD
r2224540 r2239384 87 87 88 88 ## Changelog 89 2.0.3 Added group member upgrade/downgrade functionality. 90 89 91 2.0.2 Fixed pagination issues on Admin Group Dashboard and Group Leader Dashboard. 90 92 -
groups-for-membermouse/trunk/groups-for-membermouse.php
r2224540 r2239384 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. 26 * Version: 2.0.3 7 7 * Author: Mintun Media 8 8 * Plugin URI: https://www.powerpackmm.com/groups-for-membermouse-plugin/ … … 69 69 add_action('mm_member_add', array(&$this, 'MemberMouseGroupMemberAdded')); 70 70 add_action('mm_member_status_change', array(&$this, 'MemberMouseGroupLeaderStatus')); 71 add_action('mm_member_membership_change', array( $this, 'membership_changed_handler')); 71 72 add_action('admin_head', array(&$this, 'MemberMouseGroupOptionUpdate')); 72 73 add_shortcode('MM_Group_SignUp_Link', array(&$this, 'MemberMouseGroupPurchaseLinkShortcode')); … … 249 250 } 250 251 252 /** 253 * Shortcode output for Purchase Link 254 * [MM_Group_SignUp_Link] 255 */ 251 256 public function MemberMouseGroupPurchaseLinkShortcode() { 252 257 global $wpdb, $current_user; 253 if (is_user_logged_in() && in_array('Group Leader', $current_user->roles)) : 258 259 if (is_user_logged_in() && in_array('Group Leader', $current_user->roles)) { 254 260 $leaderSql = "SELECT id,group_template_id,group_name FROM " . $wpdb->prefix . "group_sets WHERE group_leader = '" . $current_user->ID . "'"; 255 $leaderResult = $wpdb->get_row($leaderSql); 256 if (count($leaderResult) > 0) : 257 $group_id = $leaderResult->id; 258 $template_id = $leaderResult->group_template_id; 259 $groupName = $leaderResult->group_name; 260 $itemSql = "SELECT member_memlevel,group_member_cost FROM " . $wpdb->prefix . "group_items WHERE id = '" . $template_id . "'"; 261 $itemResult = $wpdb->get_row($itemSql); 262 263 if (!empty($itemResult->group_member_cost)) : 264 $itemCost = $itemResult->group_member_cost; 265 $purchaseUrl = MM_CorePageEngine::getCheckoutPageStaticLink($itemCost); 266 else : 267 $itemCost = $itemResult->member_memlevel; 268 $purchaseUrl = MM_CorePageEngine::getCheckoutPageStaticLink($itemCost, true); 269 endif; 270 $custom_field = get_option("mm_custom_field_group_id"); 271 $purchaseUrl .= '&cf_' . $custom_field . '=g' . $group_id; 272 return $purchaseUrl; 273 endif; 274 endif; 261 $leaderResult = $wpdb->get_row($leaderSql); 262 263 if ( is_array($leaderResult) || is_object($leaderResult) ) { 264 $group_id = $leaderResult->id; 265 $template_id = $leaderResult->group_template_id; 266 $groupName = $leaderResult->group_name; 267 $itemSql = "SELECT member_memlevel,group_member_cost FROM " . $wpdb->prefix . "group_items WHERE id = '" . $template_id . "'"; 268 $itemResult = $wpdb->get_row($itemSql); 269 270 if (!empty($itemResult->group_member_cost)) { 271 $itemCost = $itemResult->group_member_cost; 272 $purchaseUrl = MM_CorePageEngine::getCheckoutPageStaticLink($itemCost); 273 } else { 274 $itemCost = $itemResult->member_memlevel; 275 $purchaseUrl = MM_CorePageEngine::getCheckoutPageStaticLink($itemCost, true); 276 } 277 $custom_field = get_option("mm_custom_field_group_id"); 278 $purchaseUrl .= '&cf_' . $custom_field . '=g' . $group_id; 279 return $purchaseUrl; 280 } 281 } 275 282 return ''; 276 283 } … … 611 618 } 612 619 613 // hook over mm_member_add 620 /** 621 * Member Added to MemberMouse - Check if it's a group purchase and add to Groups table 622 */ 614 623 public function MemberMouseGroupMemberAdded($data) { 615 624 include_once( WP_PLUGIN_DIR . "/membermouse/includes/mm-constants.php" ); 616 625 include_once( WP_PLUGIN_DIR . "/membermouse/includes/init.php" ); 626 617 627 global $wpdb; 628 618 629 $groupId = get_option("mm_custom_field_group_id"); 619 if (isset($data["cf_" . $groupId]) && !empty($data["cf_" . $groupId])) : 620 $cf = $data["cf_" . $groupId]; 621 $memberId = $data["member_id"]; 622 $groupName = (!empty($data["cf_4"])) ? $data["cf_4"] : 'Group'; 623 if (is_numeric($cf)) : 624 $templateSql = "SELECT id,group_size FROM " . $wpdb->prefix . "group_items WHERE id = '" . $cf . "'"; 625 $templateResult = $wpdb->get_row($templateSql); 626 if (count($templateResult) > 0) : 627 $template_id = $templateResult->id; 628 $groupSize = $templateResult->group_size; 629 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets (id,group_template_id,group_name,group_size,group_leader,group_status,createdDate,modifiedDate)VALUES('','" . $template_id . "','" . $groupName . "','" . $groupSize . "','" . $memberId . "','1',now(),now())"; 630 $query = $wpdb->query($sql); 631 $updateUser = wp_update_user(array('ID' => $memberId, 'role' => 'Group Leader')); 632 endif; 633 else : 634 // $gID = substr($cf, -1); 635 $gID = substr($cf, 1); 636 $sql = "SELECT * FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $gID . "'"; 637 $result = $wpdb->get_row($sql); 638 if (count($result) > 0) : 639 $groupSize = $result->group_size; 640 $groupId = $result->id; 641 $sSql = "SELECT COUNT(id) AS count FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $gID . "'"; 642 $sRes = $wpdb->get_row($sSql); 643 $gCount = $sRes->count; 644 if ($gCount < $groupSize) : 645 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets_members (id,group_id,member_id,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "',now(),now())"; 646 $query = $wpdb->query($sql); 647 else : 648 $groupSql = "SELECT group_leader FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $groupId . "'"; 649 $groupResult = $wpdb->get_row($groupSql); 650 $group_leader = $groupResult->group_leader; 651 652 $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())"; 653 $adminQuery = $wpdb->query($adminSql); 654 655 $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())"; 656 $leaderQuery = $wpdb->query($leaderSql); 657 658 $user = new MM_User($memberId); 659 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 660 endif; 661 endif; 662 endif; 663 endif; 664 } 665 630 631 // Check if Purchase is for a group (custom field will be filled in) 632 if (isset($data["cf_" . $groupId]) && !empty($data["cf_" . $groupId])) { 633 $cf = $data["cf_" . $groupId]; 634 $memberId = $data["member_id"]; 635 636 if (is_numeric($cf)) { 637 // Group Leader. Custom Field contains Group Type ID 638 639 $templateSql = "SELECT id,group_size FROM " . $wpdb->prefix . "group_items WHERE id = '" . $cf . "'"; 640 $templateResult = $wpdb->get_row($templateSql); 641 642 if (count($templateResult) > 0) { 643 $template_id = $templateResult->id; 644 $groupSize = $templateResult->group_size; 645 $groupName = $templateResult->name; 646 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets (id,group_template_id,group_name,group_size,group_leader,group_status,createdDate,modifiedDate)VALUES('','" . $template_id . "','" . $groupName . "','" . $groupSize . "','" . $memberId . "','1',now(),now())"; 647 $query = $wpdb->query($sql); 648 $updateUser = wp_update_user(array('ID' => $memberId, 'role' => 'Group Leader')); 649 } 650 } else { 651 // Group Member. Custom Field contains group ID (g##) 652 653 $gID = substr($cf, 1); 654 $sql = "SELECT * FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $gID . "'"; 655 $result = $wpdb->get_row($sql); 656 657 if (count($result) > 0) { 658 $groupSize = $result->group_size; 659 $groupId = $result->id; 660 $sSql = "SELECT COUNT(id) AS count FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $gID . "'"; 661 $sRes = $wpdb->get_row($sSql); 662 $gCount = $sRes->count; 663 664 if ($gCount < $groupSize) { 665 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets_members (id,group_id,member_id,createdDate,modifiedDate)VALUES('','" . $groupId . "','" . $memberId . "',now(),now())"; 666 $query = $wpdb->query($sql); 667 } else { 668 // Reached Group Capacity. Do not add member 669 $groupSql = "SELECT group_leader FROM " . $wpdb->prefix . "group_sets WHERE id = '" . $groupId . "'"; 670 $groupResult = $wpdb->get_row($groupSql); 671 $group_leader = $groupResult->group_leader; 672 673 // Add notices to DB 674 $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())"; 675 $adminQuery = $wpdb->query($adminSql); 676 677 $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())"; 678 $leaderQuery = $wpdb->query($leaderSql); 679 680 // Cancel member's access. 681 $user = new MM_User($memberId); 682 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 683 } 684 } 685 } 686 } 687 } 688 689 /** 690 * Group Leader Member Status Changed. If status = cancelled, cancel all group member access as well 691 */ 666 692 public function MemberMouseGroupLeaderStatus($data) { 667 693 include_once( WP_PLUGIN_DIR . "/membermouse/includes/mm-constants.php" ); 668 694 include_once( WP_PLUGIN_DIR . "/membermouse/includes/init.php" ); 669 695 global $wpdb; 670 $memberId = $data["member_id"]; 671 $status = $data["status"]; 672 $leaderSql = "SELECT id FROM " . $wpdb->prefix . "group_sets WHERE group_leader = '" . $memberId . "'"; 696 697 $memberId = $data["member_id"]; 698 $status = $data["status"]; 699 $leaderSql = "SELECT id FROM " . $wpdb->prefix . "group_sets WHERE group_leader = '" . $memberId . "'"; 673 700 $leaderResult = $wpdb->get_row($leaderSql); 674 if (count($leaderResult) > 0) : 701 702 // Check if current member is a Group Leader 703 if (count($leaderResult) > 0) { 675 704 $groupId = $leaderResult->id; 676 else : 677 $groupId = 0; 678 endif; 679 680 if (($status == 2) && !empty($groupId)) : 681 $sql = "SELECT member_id FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $groupId . "'"; 682 $results = $wpdb->get_results($sql); 683 if (count($results) > 0) : 684 foreach ($results as $result) : 685 $user = new MM_User($result->member_id); 686 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 687 endforeach; 688 endif; 689 endif; 690 } 691 } 692 } 705 } else { 706 // Exit 707 return; 708 } 709 710 // Check if User is Cancelled and in a group. Cancels all members in the group. 711 if ( ($status == 2) && !empty($groupId) ) { 712 $sql = "SELECT member_id FROM " . $wpdb->prefix . "group_sets_members WHERE group_id = '" . $groupId . "'"; 713 $results = $wpdb->get_results($sql); 714 if (count($results) > 0) { 715 foreach ($results as $result) { 716 $user = new MM_User($result->member_id); 717 $userStatus = MM_AccessControlEngine::changeMembershipStatus($user, MM_Status::$CANCELED); 718 } 719 } 720 } 721 } 722 723 /** 724 * Membership Level Changed Handler 725 * Handles group leader upgrade and downgrade. 726 * 727 * If Group Leader Upgrades or Downgrades > Update group template and number allowed in group in database. 728 * 729 * TODO - if user has more accounts than are allowed in group changed to - they'll still have that number of members in database. 730 */ 731 public function membership_changed_handler($data) { 732 global $wpdb; 733 734 $groupId = get_option("mm_custom_field_group_id"); 735 736 // Check if Purchase is for a group leader (custom field will be filled in). 737 // If group is numeric - it means they are a group leader 738 if (isset($data["cf_" . $groupId]) && !empty($data["cf_" . $groupId]) && is_numeric($data["cf_" . $groupId]) ) { 739 $cf = $data["cf_" . $groupId]; 740 $memberId = $data["member_id"]; 741 742 // Get Group Type data based on Group Type ID. Gives us group name and size 743 $templateSql = "SELECT id,group_size FROM " . $wpdb->prefix . "group_items WHERE id = '" . $cf . "'"; 744 $templateResult = $wpdb->get_row($templateSql); 745 746 if ( is_object($templateResult) ) { 747 // Capture Group Type Information for later 748 $template_id = $templateResult->id; 749 $groupSize = $templateResult->group_size; 750 751 // Check if Leader already has a group 752 $group = $this->get_group_from_leader_id($memberId); 753 754 if ( $group ) { 755 // Update Group Template ID and group size 756 $wpdb->update( $wpdb->prefix ."group_sets", array('group_template_id' => $template_id, 'group_size' => $groupSize), array('id' => $group->id) ); 757 } else { 758 // Create Group 759 $sql = "INSERT INTO " . $wpdb->prefix . "group_sets (id,group_template_id,group_name,group_size,group_leader,group_status,createdDate,modifiedDate)VALUES('','" . $template_id . "','" . $groupName . "','" . $groupSize . "','" . $memberId . "','1',now(),now())"; 760 $query = $wpdb->query($sql); 761 $updateUser = wp_update_user(array('ID' => $memberId, 'role' => 'Group Leader')); 762 } 763 } 764 } 765 } 766 767 /** 768 * Get Group ID with Member ID 769 * @return array | bool - If Group is found, returns row from database. If not, returns false 770 */ 771 public function get_group_from_leader_id($memberId) { 772 global $wpdb; 773 774 $sql = "SELECT * FROM " . $wpdb->prefix ."group_sets WHERE group_leader='". $memberId ."'"; 775 $result = $wpdb->get_row($sql); 776 777 if ( $result > 0 ) { 778 // Found group 779 return $result; 780 } else { 781 return false; 782 } 783 } 784 785 } // End Class 786 } // End if class exists 787 693 788 if (class_exists('MemberMouseGroupAddon')) : 694 789 global $MemberMouseGroupAddon; -
groups-for-membermouse/trunk/readme.txt
r2224540 r2239384 70 70 71 71 == Changelog == 72 2.0.3 Added group member upgrade/downgrade functionality. 73 72 74 2.0.2 Fixed pagination issues on Admin Group Dashboard and Group Leader Dashboard. 73 75
Note: See TracChangeset
for help on using the changeset viewer.