Merge pull request #23603 from eileenmcnaughton/rel2
[civicrm-core.git] / CRM / Member / Page / UserDashboard.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
bc77d7c0 4 | Copyright CiviCRM LLC. All rights reserved. |
6a488035 5 | |
bc77d7c0
TO
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
6a488035 9 +--------------------------------------------------------------------+
d25dd0ee 10 */
6a488035
TO
11
12/**
13 *
14 * @package CRM
ca5cec67 15 * @copyright CiviCRM LLC https://civicrm.org/licensing
6a488035
TO
16 */
17
18/**
19 * This class is for building membership block on user dashboard
20 */
21class CRM_Member_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBoard {
22
23 /**
fe482240 24 * List memberships for the UF user.
6a488035 25 *
6a488035 26 */
00be9182 27 public function listMemberships() {
be2fb01f 28 $membership = [];
353ffa53 29 $dao = new CRM_Member_DAO_Membership();
6a488035 30 $dao->contact_id = $this->_contactId;
353ffa53 31 $dao->is_test = 0;
4609d331 32 $dao->orderBy('start_date DESC');
6a488035
TO
33 $dao->find();
34
35 while ($dao->fetch()) {
be2fb01f 36 $membership[$dao->id] = [];
6a488035
TO
37 CRM_Core_DAO::storeValues($dao, $membership[$dao->id]);
38
39 //get the membership status and type values.
40 $statusANDType = CRM_Member_BAO_Membership::getStatusANDTypeValues($dao->id);
be2fb01f 41 foreach ([
c5c263ca
AH
42 'status',
43 'membership_type',
be2fb01f 44 ] as $fld) {
9c1bc317 45 $membership[$dao->id][$fld] = $statusANDType[$dao->id][$fld] ?? NULL;
6a488035 46 }
a7488080 47 if (!empty($statusANDType[$dao->id]['is_current_member'])) {
6a488035
TO
48 $membership[$dao->id]['active'] = TRUE;
49 }
50
51 $membership[$dao->id]['renewPageId'] = CRM_Member_BAO_Membership::getContributionPageId($dao->id);
52 if (!$membership[$dao->id]['renewPageId']) {
53 // Membership payment was not done via online contribution page or free membership. Check for default membership renewal page from CiviMember Settings
aaffa79f 54 $defaultRenewPageId = Civi::settings()->get('default_renewal_contribution_page');
6a488035 55 if ($defaultRenewPageId) {
5a01772c
BS
56 //CRM-14831 - check if membership type is present in contrib page
57 $memBlock = CRM_Member_BAO_Membership::getMembershipBlock($defaultRenewPageId);
481a74f4 58 if (!empty($memBlock['membership_types'])) {
5a01772c 59 $memTypes = explode(',', $memBlock['membership_types']);
481a74f4 60 if (in_array($dao->membership_type_id, $memTypes)) {
5a01772c
BS
61 $membership[$dao->id]['renewPageId'] = $defaultRenewPageId;
62 }
63 }
6a488035
TO
64 }
65 }
66 }
67
68 $activeMembers = CRM_Member_BAO_Membership::activeMembers($membership);
69 $inActiveMembers = CRM_Member_BAO_Membership::activeMembers($membership, 'inactive');
70
71 $this->assign('activeMembers', $activeMembers);
72 $this->assign('inActiveMembers', $inActiveMembers);
73 }
74
75 /**
dc195289 76 * the main function that is called when the page
6a488035
TO
77 * loads, it decides the which action has to be taken for the page.
78 *
6a488035 79 */
00be9182 80 public function run() {
6a488035
TO
81 parent::preProcess();
82 $this->listMemberships();
83 }
96025800 84
6a488035 85}